【问题标题】:how to pass data from one function to another in component.ts , angular2如何在component.ts,angular2中将数据从一个函数传递到另一个函数
【发布时间】:2017-08-07 04:55:25
【问题描述】:

您好,我在按钮单击“data.someid”时传递了一些值,我想在另一个按钮单击中获取此“data.someid”

html
---
<button (click)="click1(data.someid)"></button>
<button (click)="click2()"></button>

组件.ts

click1(data){
   this.value = data
}
click2(){
  console.log(this.value)
}

现在将检索到的数据存储到“click1”上的this.value 中,我想在另一个按钮单击中访问它,但console.log(this.value) 显示undefined

请有人告诉我如何访问它。

【问题讨论】:

  • 您确定 this.value = 函数 click1() 中的数据分配正确吗?尝试先在 click1() 函数中记录值。
  • 根据您的代码,函数 2 依赖于函数 1,因为 this.value 变量将在单击函数 1 时分配数据。所以在这种情况下,如果您直接尝试函数 2,则该值将关闭课程未定义
  • 您能否将type="button" 添加到您的按钮元素并重试?
  • @mayur 我想在 click2 中获取这个值,我该怎么做。
  • @echonax .. 它工作得很好.. 它是如何在 type="button" 上工作的。以及在“span”中使用它的任何其他方式点击

标签: javascript angularjs angular variables components


【解决方案1】:

您是否已将该变量声明为类内的局部变量?并确保您在第二个按钮之前单击了第一个按钮。

export class SomeClass {
  value: any;

  click1(data){
    this.value = data
  }
  click2(){
    console.log(this.value)
  }
}

【讨论】:

    【解决方案2】:

    您应该将type="button" 添加到您的按钮元素中,

    <button type="button (click)="click1(data.someid)"></button>
    

    否则表单内的按钮将默认为type=submit,就像您提交表单一样。这就是为什么this 指代您的click 范围内的其他内容。

    【讨论】:

    • 感谢它的工作很酷.. 如果我使用 span 而不是按钮它不起作用,任何其他修复?
    • @pradeepks 似乎可以正常使用跨度。你能在这个 plunker 中重现它吗:plnkr.co/edit/gzD677GPvX3gM1bABNzg?p=preview
    • 嗨,我用 span 检查了它的工作正常...谢谢。
    猜你喜欢
    • 2018-07-29
    • 1970-01-01
    • 2020-09-26
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多