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
元素失去焦点时触发。这是限制。
要在每次 textarea
内容更改时更新数据源,而不使用数据绑定,您可以单独应用 ngModel
指令以允许 (ngModelChange)
被触发:
<textarea name="description" ngModel (ngModelChange)="description = $event" ...></textarea>
有关演示,请参阅 this stackblitz。
在我的 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
元素失去焦点时触发。这是限制。
要在每次 textarea
内容更改时更新数据源,而不使用数据绑定,您可以单独应用 ngModel
指令以允许 (ngModelChange)
被触发:
<textarea name="description" ngModel (ngModelChange)="description = $event" ...></textarea>
有关演示,请参阅 this stackblitz。