Comment écrire une fonction qui sera retournée: Observable.
mon service:
export interface ModelTemp {
name: string;
}
En service la méthode la variable est affichée en rouge:
Le type d'expression renvoyé {name: string} [] n'est pas assignable au type Observable less ... (Ctrl + F1) Vérifie TypeScript appelé les paramètres de fonction, les valeurs de retour, les expressions assignées pour être de type correct
Comment corriger cette erreur?
mon composant:
model: ModelTemp;
constructor(private getService: GetService) {}
ngOnInit() {
this.generate();
}
generate() {
this.getService.get()
.subscribe((modelData) => {
this.model = modelData;
});
}
mon interface:
modelTemp= [{
name: 'abcdefghijk'
}];
get(): Observable<ModelTemp> {
return this.modelTemp;
}
Je ne sais pas où je fais une erreur. Le composant de modèle doit être déclaré différemment (de cette manière): modelPage: ModelPage; ou alors: modelPage: ModelPage [];
Dans mon navigateur, le navigateur me renvoie une erreur:
this.getService.get (...). subscribe n'est pas une fonction chez TempComponent .push ../ src / app / temp / temp.component.ts.TempComponent.generate.
Je veux utiliser la méthode subscribe. Qui retournera le modèle (interface ModelTemp)
Comment corriger le code?
Comment écrire une fonction qui sera retournée: Observable.
4 Réponses :
utiliser des opérateurs rxjs comme of pour renvoyer un observable
import {of} from 'rxjs';
get(): Observable<ModelTemp> {
return of(this.modelTemp);
}
Vous pouvez essayer quelque chose comme ceci:
modelTemp: BehaviorSubject<ModelTemp[]> = new BehaviorSubject([{
name: 'abcdefghijk'
}]);
get(): BehaviorSubject <ModelTemp[]> {
return this.modelTemp;
}
Cela renvoie un sujet auquel vous pouvez vous abonner.
Cela dépend du type de contrôle dont vous avez besoin sur l'observable résultant.
Si vous avez seulement besoin de satisfaire une exigence selon laquelle les données déjà connues doivent être dans un observable, alors Fateh Mohamed a> a la bonne idée de renvoyer un de (this.modelTemp) code> .
Mais si vous devez émettre des valeurs futures à mesure que le tableau ModelTemp change, alors Burgardt allemand est sur un mieux suivre en vous fournissant un sujet sur lequel vous pouvez appeler behaviorSubject.next (newModelTemp) qui émettra à toute personne qui s'est abonnée à votre Sujet du comportement . Vous pouvez également empêcher d'autres appelants d'émettre à partir de ce sujet de comportement en renvoyant uniquement le résultat de behaviorSubject.asObservable () et en gardant le sujet de comportement lui-même privé.
Enfin, si le tableau ModelTemp contient un ensemble de valeurs qui doivent être émises successivement par l'observable, utilisez de (this.modelTemp) .
la méthode: get (): Observable réinitialisera l'erreur: Tapez 'Observable <{name: string; } []> 'n'est pas attribuable au type' Observable