【发布时间】:2016-08-09 07:41:37
【问题描述】:
Angular 2 ngModel 指令适用于变量和函数,例如
<input [ngModel]="myVar" (ngModelChange)="myFunc($event)" />
我想用 BehaviorSubjects 代替变量和函数
<input [ngModel]="mySubject | async" (ngModelChange)="mySubject.next($event)" />
有没有一种安全的方法来扩展 ngModel 或使用某种宏来减少模板中的重复?
<input [myNewNgModel]="mySubject" />
【问题讨论】:
-
听起来您正在寻找类似github.com/angular/angular/issues/4062 的东西。我敢肯定这会出现在 Angular2 中,但只是在发布之后。
-
@GünterZöchbauer 很高兴知道还有其他人试图接收所有内容。主要区别在于,我尝试使用 observables 扩展/重用 ngModel,而提案侧重于将事件绑定到 observables。
-
这是最终解决的问题吗?我很高兴写下回复,但目前我很难理解您是否真的想将这些输入用作表单的一部分?如果是这样,你有没有想过听可观察的形式?如果没有,您能否提供一些关于您如何使用 BehaviorSubject 的背景信息?当然有它的用例,但是当我们刚接触 RxJS 时,我们倾向于稍微过度使用 Subjects。
-
这里有 2 个目标:1. 减少在处理
myObservable.subscribe((myVar) => this.myVar = myVar)和myObserable | async等可观察对象时使用的样板代码 2. 学习如何扩展 Angular 对象。我不明白装饰器如何工作以及如何扩展装饰对象。我选择 ngModel 来说明我要解决的问题,但它根本与 ngModel 无关。 -
管道会是这里的理想解决方案吗?您将在更新属性和发出值方面保持关注点分开。否则,它将导致您必须订阅事件才能将值设置回原始属性... 工作实验:尝试创建一个简单的组件,它可以为您提供两全其美的功能,而无需比您连接更多'd 使用 ngModel 连接起来。
标签: angular rxjs observable