javascript - Angular 中的独立双向数据绑定(bind)

标签 javascript angular typescript

我有一个自定义表格组件,它需要一个模型来执行一些可以双向绑定(bind)的行选择操作:

<my-table [(selected)]="selectedRows"></my-table>

可选地,如果我不关心该模型发生的变化,我也可以通过单向数据绑定(bind)简单地传递一个项目:

<my-table [selected]="selectedRows"></my-table>

如果我不想有一个双向绑定(bind)的数据项,而是想要一个数据项,我通过单向数据绑定(bind)和一个处理程序/事件发射器传递给表组件,这样语法就结束了最多与此不同:

<my-table [selected]="selectedRows" (selected)="handleSelectedChanged($event)"></my-table>

是否可以不对 my-table 组件进行更改或更改最少?还是我必须在传递 handleSelectedChanged($event)my-table 组件上创建一个 @Output 参数?

谢谢!

最佳答案

不,您不需要在 my-table 组件表中进行任何更改。仅当您想要使用要发出的自定义事件时,才使用 (selectedChange) 而不是 (selected) 就是这样。我希望您已经在 my-table 中的某个位置拥有 Input 绑定(bind) selectedOutput 绑定(bind) selectedChange 组件。此外,选定的更改属性绑定(bind)是完全可选的。

<my-table 
  [selected]="selectedRows" 
  (selectedChange)="handleSelectedChanged($event)">
</my-table>

如果您想知道两种方式绑定(bind)的东西如何需要在事件上添加 Change 后缀,因为这是设计使然。为了更清楚地理解它,您还可以查看 Angular ngModel 指令。

<input [ngModel]="myModel" (ngModelChange)="myModel = $event" />
// You can also do assignment by calling function
<input [ngModel]="myModel" (ngModelChange)="inpuChanged($event)" />

可以写成

<input [(ngModel)]="myModel" />

关于javascript - Angular 中的独立双向数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234264/

相关文章:

typescript - TS2740 Type is missing the following properties from ReadOnly<MyInterface> error in React Native with TypeScript 应用程序

javascript - 使用 ES5 的 Angular2 网络 worker

javascript - 如何在 Controller 上获取 $q promise 值

javascript - rq 值在 Node js 和 pug 中未定义

javascript - global in (function(global){ some code .. })(this) 是做什么的?

Angular 4 订阅 observable 在更改后不会更新

javascript - 记住浏览器后退按钮上最后选择的单选按钮

javascript - 如何在没有 IDE 的情况下构建和部署三星 SmartTV 应用程序(例如 : on Linux)

angular - 将Nginx配置为按 Angular 服务器资源文件

reactjs - 使用 React 和 Typescript 描述柯里化(Currying)状态处理程序的类型