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

Route params at parent level change, child level resolver is called to resolve new data, but route data observers are not notified that data has changed.

See #12942 where this issue as initially titled was fixed but the actual use case is still broken (I never tested the fix as the initial feedback was that the issue wasn't going to be fixed so prior to the fix landing I had already changed my routing to avoid this issue. Now attempting to refactor the resulting strange routing configuration and finding that the issue is still there)

Expected behavior

Route observers would be given the newly resolved data

Minimal reproduction of the problem with instructions

See https://github.com/slubowsky/resolve-issue

Run the app (ng serve). Click on the links to navigate. Resolver is called every navigation regardless of whether parent or child param changes and a message is logged to the console "FooResolve ..."

Component which has subscribed for route data is only notified (as evidenced by the console messages) when the child param changes.

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

Having resolver re-resolve the data without letting the components know is kind of useless...

Please tell us about your environment:

Angular version: 2.0.X

@angular/cli: 1.0.0

node: 7.8.0

os: win32 x64

@angular/common: 4.0.1

@angular/compiler: 4.0.1

@angular/core: 4.0.1

@angular/forms: 4.0.1

@angular/http: 4.0.1

@angular/platform-browser: 4.0.1

@angular/platform-browser-dynamic: 4.0.1

@angular/router: 4.0.1

@angular/cli: 1.0.0

@angular/compiler-cli: 4.0.1

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]

Node (for AoT issues): node --version =

Issue 2:
in my application I have a json object which is hardcoded. that values are bound with the input controls in the view. but if i changes the values of the json object during/based on some events, then those changes values are not getting reflected in the view/input controls? how do i forcefully reload/refresh the view?

please look the component below. In that the values which i have assigned inside the constructor gets reflected in the view during the load of the component.

based on some events on the parent component, the method LoadExtractorQueueDetails is called and the same variable this.sampleData is being set with some other values.

ideally i expect these values to be reflected in the view? but this doesn't seem to happen?

why it is not happening? how do i reload/refresh the views ?

`import { Component, Input, OnInit } from '@angular/core'

import { FORM_DIRECTIVES } from '@angular/common';

@component({

selector: 'extractorQueueDetails',

directives: [FORM_DIRECTIVES],

templateUrl: './HTML/Admin/ExtractorQueueDetails.html'

})

export class ExtractorQueueDetails {

resultData: ExtractorQueueItem;
sampleData: Sample;

constructor() {
console.log("ExtractorQueueDetails component is loaded");

this.sampleData = { queueId: 123, name: "Krishnan" };
}
public LoadExtractorQueueDetails() {
this.sampleData = { queueId: 456, name: "Krishnan123" };
}

}`

My HTML template is like below

<input type="text" name="txtQueueID" class="form-control" id="txtQueueID" [(ngModel)]="sampleData.queueId" /> <input type="text" name="Description" class="form-control" [(ngModel)]="sampleData.name" id="Description" />