gpt4 book ai didi

Angular2 RC2 Expression 检查后发生了变化。

转载 作者:太空狗 更新时间:2023-10-29 18:07:24 26 4
gpt4 key购买 nike

我从 RC1 更新到 RC2 并收到这条神秘消息 - “检查后表达式已更改”。代码非常简单。
父组件有两个子组件“sister”和“brother”。在初始化之后,姐姐发出一个分配给父变量的事件,兄弟的 Input() 属性绑定(bind)到同一个变量。我认为这是使用父变量的兄弟组件之间的“经典”通信。
它曾经在 RC1 中工作,但不是 RC2。我检查了 CHANGELOG.md,但没有找到任何线索。我究竟做错了什么? http://plnkr.co/edit/HMPAbImpWWeZrVjHyb6H?p=preview

import { Component, Input, Output, EventEmitter } from '@angular/core';

@Component({
selector: 'brother',
template:'<h2>Brother has {{present}}</h2>'
})
export class Brother{
@Input() present: string;
}

@Component({
selector: 'sister',
template:'<h2>Sister has {{_present}}</h2>'
})
export class Sister{
@Output() present: EventEmitter<string> = new EventEmitter;
public _present: string = 'something';
ngOnInit(){
this.present.emit(this._present);
}
}

@Component({
selector: 'my-app',
template: `
<div class="container">
<h2>Parent has {{present}}</h2>
<brother [present]="present"></brother>
<sister (present)="present=$event"></sister>
</div>
`,
directives:[Brother,Sister]
})
export class AppComponent {
public present: string;
}

最佳答案

是的,它变了一点。具体

fix(facade): change EventEmitter to be sync by default (#8761)

https://github.com/angular/angular/commit/e5904f4

因此,如果您更改代码:

@Output() present: EventEmitter<string> = new EventEmitter; 

到:

@Output() present: EventEmitter<string> = new EventEmitter(true); 

然后它应该可以工作,并且您会得到相同的行为。

另见 https://github.com/angular/angular/blob/master/modules/%40angular/facade/src/async.ts#L152

http://www.bennadel.com/blog/3071-synchronous-vs-asynchronous-eventemitters-in-angular-2-beta-14.htm

关于Angular2 RC2 Expression 检查后发生了变化。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37977688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com