Dans mon application, j'ai une table qui est remplie par un tableau et où j'utilise un filtre. Dans un OnInit, une promesse est appelée pour obtenir les données. Maintenant, le problème est qu'après une actualisation, la valeur de _projects (et le paramètre d'entrée de la transformation) n'est pas définie et rien n'est affiché dans la table. Lorsque je clique sur une liste déroulante, la fonction de transformation est déclenchée et la table est remplie. Existe-t-il un moyen de déclencher le canal lorsque _projects est défini dans la promesse? J'ai aussi essayé avec des pipes pures/impures.Trigger Angular 2 tuyau après rafraîchissement de la page avec des données de la promesse
this._projectService.getProjectsPromise().done(
function (jsdo, success, request){
that._projects = request.response[HorizonData.dsProjects][HorizonData.dsProjects][HorizonData.ttProjects];
for (let project of that._projects) {
project.WhenWhoCreatedFull = project.WhenWhoCreated
var whenwho = project.WhenWhoCreated.split(" ");
project.WhenWhoCreated = whenwho[0] + " " + whenwho[2];
}
}
)
Dans mon component.html
<tr title="{{ project.INFO }}" *ngFor="let project of _projects | projectFilter: filtered">
tuyau angulaire:
transform(value: IProject[], filterBy: IProject): IProject[] {
return filterBy && value ? value.filter((project: IProject) =>
(project.projectnr.toLowerCase().indexOf(filterBy.projectnr.toLowerCase()) !== -1)
&& (project.projectname.toLowerCase().indexOf(filterBy.projectname.toLowerCase()) !== -1)
&& (project.clientnr.toLowerCase().indexOf(filterBy.clientnr.toLowerCase()) !== -1)
&& (project.clientname.toLowerCase().indexOf(filterBy.clientname.toLowerCase()) !== -1)
&& (filterBy.statusdesc.indexOf(project.statusdesc) !== -1)) : value;
}
thx pour la bonne réponse. Je l'ai maintenant travailler avec la première option et implémenté ChangeDetectionStrategy avec detectChanges(). Pour une utilisation future, je vais certainement regarder la bibliothèque RxJS, mais pour l'instant je l'ai fait fonctionner. – NiAu