angular - 角 ngOnInit()
问题描述
我尝试在我的ngOnInit
方法中为每个执行一个(我使用 Angular 4+)。但它不执行
有我的代码:
export class ObjectDetailComponent implements OnInit {
public object$: Object ;
private member$: Object ;
private _sellers = [];
private _seller: string;
constructor(private route: ActivatedRoute, private _cookieService: CookieService,
private _objectService: AuctionedObjectService, private _memberService: MemberService, private _sellerService: SellerService) {
this.route.params.subscribe( params => this.object$ = params.id );
}
ngOnInit() {
this._objectService.getObject(this.object$).subscribe(
data => this.object$ = data);
this._memberService.getMember(Number(this._cookieService.get('login')))
.subscribe(data2 => this.member$ = data2);
this._sellerService.getSellers()
.subscribe(data3 => this._sellers = data3);
this.sellerUser();
}
public sellerUser(){
for(const seller of this._sellers){
if(Number(this._cookieService.get('login')) === seller.idUser){
this._seller = seller.username;
break;
}
}
}
}
sellerUser()
不起作用:/
解决方案
在你确定你得到结果后使用你的同步逻辑,this.sellerUser();
在你的Subscripition
. 在您当前的实现中,this.sellerUser();
将在您的订阅结束之前被调用(因为订阅是异步的,并且将在执行所有同步代码后最后执行)
this._sellerService.getSellers()
.subscribe(data3 => {
this._sellers = data3;
this.sellerUser(); // here
});
推荐阅读
- java - Gson 在对象列表中包含字段并排除策略
- python - 不能在 Celery 中使用 SQLite 作为后端
- python - 如何使用win32实现类似VBA的“Range.Find”?
- java - 我正在使用 SOQL 使用 java 访问 salesforce 的数据
- mysql - SQL 搜索未找到所有值
- jenkins - 我正在尝试使用 jenkins 中的 owasp ZAP 对 Web 应用程序进行自动化安全测试。我遇到了以下问题
- python - 通过for循环删除python中列表的一部分
- python - numpy 创建所有坐标的数组
- neo4j - 运行 Neo4j 时出错:无法将版本“v0.A.9”的商店升级到当前商店版本“v0.A.8”(Neo4j 3.3.1)
- webpack - 如何自定义 webpack 的 4 个默认输出块名?