将路由器参数(id)传递给ngForm然后传递给事件发射器只是有点困难。这是我如何得到ID - 你可以看到第一个console.log工作正常,我可以从路由器获取id。现在我试图将它分配给我的singleOpenHome对象(但得到一个未定义的错误):
@Input() singleOpenHome: OpenHomeModel;
ngOnInit() {
// Get the slug on it from the router
this.route.params.forEach((params: Params) => {
let id = params['propertyID'];
console.log('id on the child is:'+id);
//this.singleOpenHome.propertyID == id; Cannot read property 'propertyID' of undefined
});
}
现在我想把它传递给一个表格:
<form class="my2" #form="ngForm" (ngSubmit)="handleSubmit(form.value, form.valid)" novalidate></form>
这是我的事件发射器:
@Output()
update: EventEmitter<OpenHomeModel> = new EventEmitter<OpenHomeModel>();
constructor(private route: ActivatedRoute) {}
handleSubmit(sinlgeOpenHome: OpenHomeModel, isValid: boolean) {
if (isValid) {
this.update.emit(sinlgeOpenHome);
}
}
任何帮助表示赞赏
答案 0 :(得分:1)
我遇到了与将route.params
Observable
转换为Promise
forEach
特别相关的问题。考虑使用subscribe
ngOnInit() {
// Get the slug on it from the router
this.route.params.subscribe(params => {
const id = params['propertyID'];
console.log(`id on the child is: ${id}`);
});
}
这看起来像拼写错误
this.singleOpenHome.propertyID == id;
您正在执行比较而不是分配。
那说你可能有其他错误导致该属性未定义。由于它被标记为输入,我认为它来自外部绑定。确保正确初始化传递给此绑定的值。