我有一个角组件,它消耗ngOnInit
函数上的服务。当我从服务中调用方法时,它返回一个元素数组并将其分配给一个t
变量,我确认它正在返回该数组,但是我使用了t
变量并将其分配给一个类型变量,但赋值后,该类型变量保留未定义的值。
组件:
export class HeroesFilteredComponent implements OnInit {
private heroes:Heroe[];
private termino:string;
constructor(
private _heroesService:HeroesService,
private _activatedRoute:ActivatedRoute
) { }
ngOnInit() {
this._activatedRoute.params.subscribe(params =>{
let t = this._heroesService.searchHeroes(params['g']);
this.heroes = t;
});
console.log(this.heroes.length);
}
}
服务:
@Injectable()
export class HeroesService {
private heroes:Heroe[] = [{...},...,{...}]
searchHeroes(termino:string):Heroe[]{
termino = termino.toLowerCase();
return this.heroes;
}
}
界面:
export interface Heroe{
nombre:string;
bio:string;
img:string;
aparicion:string;
casa:string;
index?:number;
}
当我检查t
时,它具有价值。
为什么这种奇怪的行为?
答案 0 :(得分:3)
console.log(this.heroes.length);
写入subscribe
中HeroesFilteredComponent
块之外。这就是它来时未定义的原因。
将其移动到subscribe
块中,它应该显示正确的值。
export class HeroesFilteredComponent implements OnInit {
private heroes: Heroe[];
private termino: string;
constructor(
private _heroesService: HeroesService,
private _activatedRoute: ActivatedRoute
) {}
ngOnInit() {
this._activatedRoute.params.subscribe(params => {
let t = this._heroesService.searchHeroes(params['g']);
this.heroes = t;
console.log(this.heroes.length);
});
}
}