所以,我正在撰寫一個自定義管道。它接受一個 String 作為引數,將它與從 ComplexObservablService 獲得的 Observable 結合起來,并回傳一個 Observable<String>。(是的,我正在簡化一些。)
import { Pipe, PipeTransform } from '@angular/core';
import { ComplexObservableService } from 'myFiles';
@Pipe({
name: 'customPipe'
})
export class CustomPipe implements PipeTransform {
constructor(private $complexObservableService: ComplexObservableService) { }
transform(input: string): Observable<string> {
return this.$complexObservableService.getStringObservable().pipe(map(str => {
console.log('here');
return str input;
}));
}
}
然后,在我的組件中,我(基本上)有以下代碼。
<span>{{ stringFromComponent | customPipe | async }}</span>
<button (click)="pushNewValueToComplexObservableService()">click me</button>
現在,ComplexObservableService 在實體化時發布一個初始值。因此,當頁面最初加載時,會立即回傳一個值,并由異步管道正確呈現。
問題是,當按下按鈕并且 ComplexObservableService 發布第二個值時,HTML 不會重新呈現。因為 的值stringFromComponent還沒有更新,只有 ComplexObservableService 發布的值,不知何故 Angular 被搞糊涂了,變化檢測的東西沒有執行;該console.log宣告從未達成。
有什么辦法可以做我想做的事嗎?
謝謝!
uj5u.com熱心網友回復:
我認為不純的管道會像這樣解決這個問題:
@Pipe({ name: 'customPipe', pure: false})
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/385194.html
下一篇:對SpringGateway的Angular請求請求的資源上不存在“Access-Control-Allow-Origin”標頭
