Ich habe eine benutzerdefinierte Rohr, um ein Array zu filtern. Die Pipe wird in einer untergeordneten Komponente verwendet, Daten zur untergeordneten Komponente werden über Eingabeparameter übergeben. Wenn die Eingabedaten geändert werden, wird Pipe nicht aufgerufen. Gibt es irgendetwas, was ich anders machen muss, wenn ich ChangeDetectionStrategy.OnPush in der Kindkomponente verwende?Rohr innerhalb Kind Komponente nicht aufgerufen, wenn die Eingabe geändert
bearbeiten
Im Beispiel unten, wird Produkt-list-Container Produkte aus NGRX Speicher. Die Daten werden über Eingabeparameter an die Produktlistenkomponente übergeben.
In Produkt-Liste-Komponente, ich habe einen Filter, der zum Ausfiltern von Zeilen basierend auf einigen Kriterien ist. Das Problem, das ich sehe, ist, dass, wenn der Eingangswert ändert Rohrfunktion nicht aufgerufen wird. Pipe wird nur einmal bei Komponentenlast aufgerufen.
@Component({
selector: 'product-list-container',
template: `
<app-product-list [productList]="productList$ | async"></app-product-list>
`
})
export default class ProductListContainer implements OnInit {
public productList$: Observable<Product[]>;
constructor(public store: Store<AppState>) {
}
ngOnInit() {
this.productList$ = this.store.select('productList');
}
}
@Component({
selector: 'app-product-list',
template: `
<div *ngFor="let product of productList | filterActiveProduct">
// More code here
</div>
`,
changeDetection: changeDetectionStrategy.onPush
})
export default class ProductList {
@Input() productList: Product[];
constructor() {
}
}
@Pipe({
name: 'fromNow'
})
export class filterActiveProduct {
transform(products: Product[], args: Array<any>): string {
return products.findAll(p => p.isActive);
}
}
Danke,
schließen Sie bitte den entsprechenden Code - eher als eine Beschreibung des Codes sagte - in der Frage . – cartant
@cartant Ich habe obigen Beispielcode hinzugefügt. Vielen Dank! – Yousuf
Eine mögliche Lösung gefunden. Wenn ich pure: false für die Pipe festlege, wird sie aufgerufen, wenn sich die Eingabe ändert. – Yousuf