我正在试验w / angular 2 beta 9,我想知道:
我有一个用以下内容绑定输入字段的组件:
[(ngModel)]="email" (ngModelChange)="changedExtraHandler($event)"
每次我输入内容时,changedExtraHandler()
都会触发。
现在在父组件中,我添加了router-outlet
加配置:
@Component({
selector: 'fv-app',
directives: [ROUTER_DIRECTIVES, HeaderComponent, LoginComponent, RouterOutlet],
template: `
<fv-header></fv-header>
<a [routerLink]="['Login']">Login</a>
<fv-login></fv-login>
<router-outlet></router-outlet>
`,
providers: [
UserService
]
})
@RouteConfig([
{
path: '/login',
name: 'Login',
component: LoginComponent
}
])
export class AppComponent { }
似乎有效,当我在/login
时,组件会显示两次。但是,当我在嵌套在router-outlet
下的组件中输入内容时,changedExtraHandler()
不会触发。有谁知道我错过了什么?
修改:
因此,经过一些调试后,结果表明,正常情况下正常呈现的指令设置正确,而NgModel#ngOnChanges调用router-outlet
registers the onChange method。当路由器创建元素时,不会调用此方法,因此不会更新ngModel。也许这是因为设置是在setUpControl
中完成的,当调用路由器插座时,它不会检测到更改,因为组件未插入AbstractChangeDetector#_detectChangesInViewChildren
下,但除此之外。但是,只是猜测,将进一步调查。任何帮助仍然非常感谢;)
答案 0 :(得分:1)
好的,我明白了。问题是,我认为在引导应用程序时,以下内容已经足够了:
import 'reflect-metadata';
import {bootstrap} from 'angular2/platform/browser'
但是,似乎没有正确加载zonejs,或者加载太晚了。在开始时导入polyfill修复了路由器的问题以及UI无法正确更新的其他问题:
import 'reflect-metadata';
import 'angular2/bundles/angular2-polyfills'
import {bootstrap} from 'angular2/platform/browser'