绑定到模板中的异步属性

时间:2016-09-17 01:46:39

标签: angular

我正在将项目从测试版转移到RC6。我试图将控制器中的属性绑定到内容可编辑指令,如下所示:

<h4 contenteditable="true" [(contenteditableModel)] = "person.name" placeholder="First Last" (contenteditableModelChange)="updated($event)"></h4>

然而person来自rest api,所以它是异步的。这导致Angular抛出错误

null is not an object (evaluating 'self.context.person.name')

这是有道理的(尽管这在早期的代码中有用。)我尝试使用?.运算符,但后来我收到此错误:

The '?.' operator cannot be used in the assignment

我正在初始化person这样的对象:

ngOnInit(){
    this.route.params.forEach(params => {
        this.nodeID = params['id'];
        this.personService.getPerson(this.nodeID)
        .subscribe(person => {this.person = person});

    });

正确的方法是什么?

2 个答案:

答案 0 :(得分:1)

也许这是一种方法:

<h4 *ngIf="person" contenteditable="true" [(contenteditableModel)] = "person.name" placeholder="First Last" (contenteditableModelChange)="updated($event)">
</h4>

如果元素未定义,请不要创建该元素。

答案 1 :(得分:0)

由于您使用 db.matches.createIndex({ "isLive" : 1, "isComplete" : 1, "endedAt" : 1 }, { "background" : true } ) 来处理onchange事件,因此可能是&#34; banana-box&#34;格式()是不必要的,并导致问题。尝试使用方括号:

[()]