Javascript 在Angular2的ngOnInit中传递参数
是否可以在Javascript 在Angular2的ngOnInit中传递参数,javascript,angular,Javascript,Angular,是否可以在ngOnInit中触发包含参数的函数,如trigger(id) 我想在(单击)事件以及ngOnInit中触发一个函数,因此当页面第一次加载时,它会触发基本相同的函数,因为它调用相同的API端点 在ngOnInit中触发的功能 getOrdersFromOrigin(id: number): void { ... } 那么在ngOnInit中可能会是这样的吗?它显示了一个错误“找不到名称'id'” Id来自我的ngFor,它是我要单击的项目的Id(单击)=“getOrdersF
ngOnInit
中触发包含参数的函数,如trigger(id)
我想在(单击)
事件以及ngOnInit
中触发一个函数,因此当页面第一次加载时,它会触发基本相同的函数,因为它调用相同的API端点
在ngOnInit中触发的功能
getOrdersFromOrigin(id: number): void {
...
}
那么在ngOnInit
中可能会是这样的吗?它显示了一个错误“找不到名称'id'”
Id来自我的ngFor
,它是我要单击的项目的Id
(单击)=“getOrdersFromOrigin(Id)”
参数Id位于getOrdersFromOrigin()中,因此它将在ngOnInit()的范围内不起作用,我的建议是,您可以声明一个属性id,并将其标记为@Input()。然后你可以在外面用。代码如下:
export class SameComponent implement OnInit {
@Input() id:number=0; //initialize
getOrdersFromOrigin(id: number): void {
...
}
ngOnInit() { this.getOrdersFromOrigin(id);}
}
如果它的路径像param一样,您可以处理它。例如,如果您正在通过单击“编辑”按钮编辑表中的某些记录,则您的应用程序将导航到“编辑表单”,您可以这样处理它:
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
};
id
是getOrdersFromOrigin()
范围的一部分,因此它不会在ngInInit()范围内声明。除非您知道要调用哪个id,否则您不能这样做,否则需要设置id或使用一个值。如果函数不支持中的id,它将抛出错误。如果id未定义或未显示,则需要在函数中处理该问题。因为在ngOnInit中,id可能不可用,因为您未从视图触发单击/其未由用户触发。如果未定义,则传递一些默认值。不,我不知道要单击哪个id,因为id来自ngFor
,只是在(click)
事件中传递我函数中的项。id
。但是这将始终将put中的id=0
作为默认值。谢谢,这是我需要的,但是将getOrdersFromOrigin(id)
放在forEach
之外,否则每次都会迭代。
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
};