Angular2 - 将路由器参数作为变量传递给ngForm

时间:2017-02-17 10:29:06

标签: angular typescript angular2-template angular2-forms

将路由器参数(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);
        }
    }

任何帮助表示赞赏

1 个答案:

答案 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;

您正在执行比较而不是分配。

那说你可能有其他错误导致该属性未定义。由于它被标记为输入,我认为它来自外部绑定。确保正确初始化传递给此绑定的值。