gpt4 book ai didi

javascript - 当赋值的右侧有值时,未定义赋值

转载 作者:行者123 更新时间:2023-11-28 17:14:58 25 4
gpt4 key购买 nike

我有一个 Angular 组件,它使用 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时,它有值(value)。

为什么会有这种奇怪的行为?

最佳答案

console.log(this.heroes.length); 写在 HeroesFilteredComponent 中的 subscribe block 之外。这就是它未定义的原因。

将其移至 subscribe block 内,它应该打印正确的值。

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);
});
}

}

关于javascript - 当赋值的右侧有值时,未定义赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53696314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com