Angular 2+ 一种从视图目标到数据源的数据绑定方式

Angular 2+ One way data binding from view target to data source

在我的 angular 应用程序中,我有一个允许用户设置描述值的元素。我希望该值在数据源中是可访问的。我使用双向数据绑定让它工作,如下所示:

<textarea id="MediaDescription" name="description" class="form-control" [(ngModel)]="description"></textarea>

但是,鉴于我的用例,这里不需要双向数据绑定。虽然视图模型需要能够更新数据源,但反之则不然。

我尝试使用 (ngModelChange) 执行此操作,但这似乎没有被调用(我通过数据源中的 OnChanges() 方法输出值来测试它)。

我怎样才能最好地重写这段代码,使我的 <textarea> 值只从视图源绑定到数据源,而不是相反?

你真的不需要ngModel这里。相反,您可以监听 change 事件

<textarea id="MediaDescription" name="description" class="form-control" (change)="description = $event.target.value"></textarea>

注意:(change)事件仅在text-area元素失去焦点时触发。这是限制。

DEMO

要在每次 textarea 内容更改时更新数据源,而不使用数据绑定,您可以单独应用 ngModel 指令以允许 (ngModelChange) 被触发:

<textarea name="description" ngModel (ngModelChange)="description = $event" ...></textarea>

有关演示,请参阅 this stackblitz