我对RXjs有一个问题' distinceUntil在更改JavaScript值后更改输入字段。
重现的步骤:
设置文字" a"在输入内
点击删除按钮>>因此输入为空,使用javascript
如果我们要插入另一个与' a'不同的值,它就会起作用。 当然,如果我从我的observable中删除distinceUntilChanged,它也会起作用。
代码段:
@Component({
selector: 'app',
template: `
<input #input [value]="value ? value : ''" (input)="filter$.next(input.value)">
{{val}}
<div>
<button (click)=remove()>Remove</button>
</div>
`
})
export class App {
filter$ = new Subject();
val:string;
value:string;
constructor() {
}
ngOnInit(): void {
this.filter$
.distinctUntilChanged()
.subscribe((value) => {
this.val = value;
this.value = value;
}));
}
remove(){
console.log('test');
this.value = "";
this.val = "";
}
}
我用问题创建了一个Plunker示例:
答案 0 :(得分:1)
这是因为你只是改变了显示的文字。您的删除功能应如下所示:
remove() {
this.filter$.next("")
}