InvalidPipeArgument: '[object object] " pour tuyau 'AsyncPipe'
Déclaré dans ce type de service:
public currentDBUserBS$: any;
constructor(private afDb: AngularFireDatabase){}
fetchUser(uid){
this.afDb.object(`users/${uid}`).valueChanges().subscribe((dUser) => {
if (dUser) {
this.currentDBUserBS$ = dUser;
}
});
}
Maintenant d'essayer de les utiliser dans le modèle de
template: `<li *ngIf="(authService.currentDBUserBS$ | async)?.role=='admin'"> Something </li>`
La pile d'erreur:
ERROR Error: InvalidPipeArgument: '[object Object]' for pipe 'AsyncPipe'
at invalidPipeArgumentError (common.js:4219)
at AsyncPipe._selectStrategy (common.js:5630)
at AsyncPipe._subscribe (common.js:5612)
at AsyncPipe.transform (common.js:5586)
at Object.View_AppNavigatorComponent_0._co [as updateDirectives] (AppNavigatorComponent.html:40)
at Object.debugUpdateDirectives [as updateDirectives] (core.js:14339)
at checkAndUpdateView (core.js:13508)
at callViewAction (core.js:13858)
at execComponentViewsAction (core.js:13790)
at checkAndUpdateView (core.js:13514)
OriginalL'auteur ishandutta2007 | 2017-11-28
Vous devez vous connecter pour publier un commentaire.
Vous donner
currentDBUserBS$
l'objet de l'extraction de Firebase et non Observables. Si vous voulez faire de cette façon, vous devez supprimer le| async
dans votre modèle.Cependant, vous pouvez effectuer les opérations suivantes :
.valueChanges()
vous donne un observables et se met à jour automatiquement lorsqu'une nouvelle valeur est émise ou une valeur existante est modifiée.les résultats seront presque à l'identique. Le
| async
est utilisée pour vous abonner à votre Observables / BehaviorSubject / dans votre modèle. Lorsqu'une nouvelle valeur est émise, Angulaire sera informé de ces modifications. Avec un.subscribe
, il sera vérifié à chaque changement de cycle de détection.j'oublie le .valueChanges(), merci beaucoup!
OriginalL'auteur tomrcht
Vous êtes en train de passer de la matrice de async pipe au lieu de l'Observable. Il suffit de retirer la async pipe ou de céder observables à currentDBUserBS$.
Je n'ai pas, en supprimant async tuyau fonctionne bien
OriginalL'auteur Mateusz Witkowski