有一个解析器,当用户导航到"创建"时解析空模型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