angular 2路由器解析器和可重用组件

时间:2016-10-03 07:51:31

标签: angular angular2-routing

有一个解析器,当用户导航到"创建"时解析空模型url,或从DB获取现有模型:

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any {

    if (route.params['id'] === 'new') {
        return new Timeline(null, '');
    } else {
        console.log('Resolving timeline from Firebase: ' + route.params['id']);

        return this.af.database.object('timelines/' + route.params['id'])
            .map((val) => {
                return new Timeline(val.$key, val.title)
            })
           .first();
    }

}

必须返回已关闭的observable(如上所述here)。

在组件中,我从route.data observable中检索解析数据。

ngOnInit() {
    this.sub = this.route.data.subscribe(
        (data) => {
            this.timeline = data['timeline'];
        }
    );
}

所以,一切正常。

但是当用户提交新模型时,组件会导航到自身(使用url中来自DB的新密钥)

this.timelines.push(formValue).then((val) => {
 this.router.navigate(['/timeline', val.key]);
});

我希望解析器从DB返回已获取的实体,但是在

ngOnInit() {
    this.sub = this.route.data.subscribe(
        (data) => {
            this.timeline = data['timeline'];
        }
    );
}

我将数据作为空对象:{}。我做错了什么?

Angular版本:2.0.0

0 个答案:

没有答案