Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2将数据传递给单击处理程序_Angular_Typescript_Click_Dom Events - Fatal编程技术网

Angular2将数据传递给单击处理程序

Angular2将数据传递给单击处理程序,angular,typescript,click,dom-events,Angular,Typescript,Click,Dom Events,我不确定我的措辞是否正确;安格拉尔发生了很大变化。我试图将表单数据传递给组件的服务。我希望在单击“生成”按钮时传递此数据。我将表单数据封装在一个对象中,并希望将该对象传递给注入组件的服务。该服务执行所有的重型起重作业。组件真正做的就是显示输出 生成器.组件.ts export class Generator { passwords: string[]; // output array passwordsObj: Object = { // form data passed to

我不确定我的措辞是否正确;安格拉尔发生了很大变化。我试图将表单数据传递给组件的服务。我希望在单击“生成”按钮时传递此数据。我将表单数据封装在一个对象中,并希望将该对象传递给注入组件的服务。该服务执行所有的重型起重作业。组件真正做的就是显示输出

生成器.组件.ts

export class Generator {
    passwords: string[]; // output array
    passwordsObj: Object = { // form data passed to service
        letters: "",
        numbers: "",
        symbols: "",
        amount: ""
    };
    constructor(gs: GeneratorService) {
        this.passwords = gs.generatePasswords(passwordsObj); // originally hard-coded, I want to now trigger this method when the "Generate" button is clicked
    }

    clicked(obj) {
        // handle the click event?
    }
}
我希望
generatePasswords
方法将
passwordsObj
作为参数。我知道怎么做。我只是不知道在单击组件的按钮时如何触发服务的
generatePasswords
方法

generator.component.html代码段

<button type="submit" (click)="clicked(passwordsObj)">Generate</button>
生成
您可以尝试以下方法:

clicked() {
  this.passwords = gs.generatePasswords(this.passwordsObj);
}

生成

使用
private
public
创建一个初始化
gs
成员/属性(有关该属性的更多信息,请参阅参数属性部分):

然后在click事件处理程序中,只需调用服务方法并将您的
passwordsObj
作为参数传递:

clicked() {
   this.passwords = this.gs.generatePasswords(this.passwordsObj);
}

请注意,您不需要将
passwordsObj
传递给事件处理程序,因为它是组件的属性,因此
clicked()
方法可以通过
this
对象访问它。

我有另一个与之相关的问题,但不想重复它(我还不能对其他问题发表评论)。我正试图像
那样绑定用户输入,但它不起作用。我认为这会将用户输入绑定到数据源。我不想使用双向绑定(避免
[(ngModel)]
)。我必须使用
@Input
吗?@daChi,你应该创建另一个问题,但是如果你不想要双向绑定,你可能需要
constructor(private gs: GeneratorService) {}
clicked() {
   this.passwords = this.gs.generatePasswords(this.passwordsObj);
}