Issue 1:
I'm submitting a ... (check one with "x")

[x] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[ ] support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question

Current behavior

The NgModel in the <select> updates the data correctly (as object), but when loading the data and placing a [attr.selected]="true" it doesn't select that value from options

Expected behavior

Loading the form with data, if a selected flag is on a <option> inside a <select> I'd expect that to be selected.

Minimal reproduction of the problem with instructions

import {Component, NgModule} from '@angular/core'
import {BrowserModule } from '@angular/platform-browser'
import { FormsModule } from '@angular/forms';

@Component({
selector: 'my-app',
template: `
<select [(ngModel)]="data.currency" name="currency" id="currency">
<option *ngFor="let c of currs" [ngValue]="c" [attr.selected]="c.value == data.currency.value ? true : null">{{ c.name }}</option>
</select>
`,
})
export class App {

currs = [
{name: "EURO", value: "EUR"},
{name: "Dollar", value: "DOLLAR"},
{name: "British Pound", value: "Pound"}
];

data: {
currency: currs[2]
};

}

@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ App ],
bootstrap: [ App ]
})
export class AppModule {}

What is the motivation / use case for changing the behavior?

Saving objects from <select> via ngModel is very helpful and prevents an extra lookup when using the data. But when returning to the form, the correct option doesn't show. It just shows blank <select> even if the data is accurate and the model is set correctly.

Please tell us about your environment:

Ubuntu 16.04

Chrome 56.0

Angular version: 2.4.3

Browser: [all | Chrome 56 | Firefox 51 |

Language: [all | TypeScript 2.1 | ES6/7 | ES5]

Node (for AoT issues): node --version = v6.9.4

FIX

https://github.com/angular/angular/blob/2.4.7/modules/%40angular/forms/src/directives/select_control_value_accessor.ts#L113

Setting a 2nd lookup for the selected attr and return the value would do the trick.

I think

Issue 2:
I'm submitting a ... (check one with "x")

[x ] bug report
[ ] feature request
[ ] support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question

Current behavior

I have a route with a parameter: path: 'a/:p' and this parameter might contain space characters.

When my app is loaded and I navigate to that route via ['/a', 'with space'], my component receives activatedRoute.snapshot.params['p'] == 'with space' and my browser's address bar shows .../a/with%20space in Edge or .../a/with space in Firefox.

When I now refresh my browser, the router navigates to the correct route, but my component receives activatedRoute.snapshot.params['p'] == 'with%20space'.

Expected/desired behavior

The latter should work like the first.

Reproduction of the problem

If the current behavior is a bug or you can illustrate your feature request better with an example, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (you can use this template as a starting point: http://plnkr.co/edit/tpl:AvJOMERrnz94ekVua0u5).

What is the expected behavior?

What is the motivation / use case for changing the behavior?

Please tell us about your environment:

Angular version: 2.0.0-rc.3

Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]

Language: [all | TypeScript X.X | ES6/7 | ES5 | Dart]