Issue 1:
Repeating over a set of objects in a template throws a TypeError when attempting to call a method with the same name as a local variable. In this case looping over a list of "action" objects and dynamically generate buttons i.e.

Edit: More concise example: https://plnkr.co/edit/QAygbyXHgseecK3xKTm9?p=preview

<div #action>
<!-- ... some markup ... -->
<div class="nested">
<button *ngFor="#thing of things"
(click)="thing.action($event)">
{{thing.label}}
</button>
</div>
<!-- ... some more markup ... -->
</div>

Original example: https://plnkr.co/edit/qIIz03Zq6R8iEGeCgP5N?p=preview

<button *ngFor="#action of actions"
(click)="action.action($event)">{{action.label}}</button>

Angular 2: 2.0.0-beta.12

OS X: 10.11.2

Chrome: 49.0.2623.87 (64-bit)

TypeError: l_action2_0 is not a function
at AbstractChangeDetector.ChangeDetector_Comp_2.handleEventInternal (VM1171 viewFactory_Comp:355)
at AbstractChangeDetector.handleEvent (VM1197 angular2.dev.js:9833)
at AppView.triggerEventHandlers (VM1197 angular2.dev.js:10511)
at eval (VM1750 viewFactory_Comp:579)
at VM1197 angular2.dev.js:13979
at VM1197 angular2.dev.js:13407
at ZoneDelegate.invoke (VM1180 angular2-polyfills.js:332)
at Object.NgZoneImpl.inner.inner.fork.onInvoke (VM1197 angular2.dev.js:2216)
at ZoneDelegate.invoke (VM1180 angular2-polyfills.js:331)
at Zone.runGuarded (VM1180 angular2-polyfills.js:241)

Looking at the transpiled code, it seems the issue appears to be in CodeGenViewFactory trying to reference the action.action()method as if it were the local variable action

l_action0_0 = locals.get('action'); // <- this is going to get your action object, {label: 'Method, action: Function}
l_event1_0 = locals.get('$event'); // <- this gets the event that is going to be sent to your function, this case MouseClick
l_action2_0 = locals.get('action'); // <- here is the problem, I think since action is the local template
// variable name the code gen generates a locals.get instead of function
// invocation, because the property has the same name and it gets lost
// (should be smart to see that is a invocation from the template local variable
// and not apply locals to get from ngFor context)

Changing the local variable name allows this case to work as expected

l_actionObj0_0 = locals.get('actionObj');
l_event1_0 = locals.get('$event');
l_action2_0 = l_actionObj0_0.action(l_event1_0); // <- looks good right because my local template variable is #actionObj

Issue 2:
This is what it takes to set three query parameters as of beta.2:

var params = new URLSearchParams();
params.set('search', term);
params.set('action', 'opensearch');
params.set('format', 'json');

That's tedious even if it does slavishly follow the standard for this class.

It should be possible to write the following far more natural statement:

var params = new URLSearchParams({
search: term,
action: 'opensearch',
format: 'json'
});

Every method that accepts a URLSearchParams object should also accept this representation.

If a parameter value is multi-variate, the syntax should allow for array values instead of just strings.

Every other reasonable HTTP api accepts this syntax. See, for example, the "data" property in jQuery ajax. The Angular 1 $http does it too as I recall.