在Angular2中通过ngOnInit传递参数
是否有可能触发一个函数,其中有一个参数trigger(id)
in ngOnInit
?在Angular2中通过ngOnInit传递参数
我有一个功能,我想触发(click)
事件以及ngOnInit
,所以当页面第一次加载时,它触发基本上相同的功能,因为它调用相同的API端点。在ngOnInit
getOrdersFromOrigin(id: number): void {
...
}
所以ngOnInit
被触发
功能会是这样的可能?它显示错误“无法找到名为‘身份证’”
ngOnInit() {
this.getOrdersFromOrigin(id);
}
ID是从我的ngFor
,未来它,我想点击(click)="getOrdersFromOrigin(id)"
你可以处理它,如果它的路线像参数。例如,如果您通过点击编辑按钮编辑在表中的一些记录,那么你的应用程序导航到编辑表格,你可以处理这样的:
import { ActivatedRoute, Params, Router } from '@angular/router';
constructor(
private route: ActivatedRoute
) { }
ngOnInit() {
this.route.params.forEach((params: Params) => {
let id = +params['id']; // (+) converts string 'id' to a number
this.getOrdersFromOrigin(id);
});
}
getOrdersFromOrigin(id: number){
//some code
};
谢谢,这是我需要的,但将'getOrdersFromOrigin(id)'放在'forEach'之外,否则每次都会迭代。 – MrNew
帕拉姆ID是getOrdersFromOrigin项目的Id
() ,所以它会不ngOnInit的范围工作(),我的建议是,你可以声明属性ID和其标记为@input()。那么你可以在外面使用它。代码如下:
export class SameComponent implement OnInit {
@Input() id:number=0; //initialize
getOrdersFromOrigin(id: number): void {
...
}
ngOnInit() { this.getOrdersFromOrigin(id);}
}
但是,这将始终将put中的id = 0作为默认值? – MrNew
'id'是getOrdersFromOrigin()的'范围的一部分'所以不会在'ngInInit()'的范围内声明。除非你知道哪个ID要打电话你不能这样做,否则需要设置id或者需要使用一个值。 – GillesC
如果id不在函数中,则会抛出错误。你需要在你的函数中处理这个函数,如果id没有被定义或者存在的话。因为在ngOnInit id中可能不可用,因为您没有触发从视图/其用户未触发的点击。如果未定义,则传递一些默认值。 – Manish
不,我不知道我要点击哪个id,因为id来自'ngFor',只是在'(click)'事件的函数中传递'item.id'。 – MrNew