当前位置: 首页 > 知识库问答 >
问题:

如何在angular2中的select change事件中获取值

张照
2023-03-14

我想使用动态生成的选择下拉菜单进行导航。似乎我不能直接这样做,所以我只想在选择更改时进行函数调用。

为此,我有以下几点:

---在模板中---

<select (change)="navSelected($event)">
    <option *ngFor="let button of navButtons;"
    value="button.route" >{{button.label}}</option>
</select>

只要说“navButtons”是一个具有“label”字段的对象数组就足够了。

---在课堂上---

navSelected(navName) {
    console.log(navName + " Clicked!");
}

这实际上工作正常。

我是在马克·拉科克的大力帮助下得出这一点的,他在这个老问题上给出了答案:如何在Angular 2中的“select”中获得新的选择?

也就是说,我希望能够在navSelected()函数调用中传递所选值。我不知道怎么做。

我尝试将其他搜索中的任意猜测添加到选项标记中,然后引用事件处理程序(所以:(change)=“navSelected(button.label)”中的按钮变量和其他组合,但没有成功。我看到了很多对ngModel的引用,但它们似乎很旧,我不完全确定它们是否适用了(而且我无法让它们在RC4中工作)。

我可能会拉一些jquery或任何东西来找到select并获取它的值,但与简单地正确调用函数相比,这似乎很难做到。


共有3个答案

虞航
2023-03-14

而不是$事件。尝试使用下面的类型转换函数。

$any($event.target). value

这将停止模板中的类型检查。

爱炯
2023-03-14

作为@eltonkamami回答的快捷方式,您可以这样传递您的对象:

<select (change)="navSelected(navButtons[$event.target.selectedIndex])">
    <option *ngFor="let button of navButtons;">{{button.label}}</option>
</select>

像这样捕捉它:

navSelected(button: [type of navButtons]){
    console.log(button);
}
郭永安
2023-03-14

您要查找的值位于$事件上。设置目标,您可以使用$event获取目标。目标值,请参见下面的示例。

navSelected($event) {
    console.log($event.target.value + " Clicked!");
}

如果您正在寻找获取选项的选定文本,您可以这样做

navSelected($event) {
    let selectElement = $event.target;
    var optionIndex = selectElement.selectedIndex;
    var optionText = selectElement.options[optionIndex];
    console.log(optionText + " Clicked!");
}

 类似资料:
  • 我正在尝试使用 考虑以下代码 每当我试图打印出的结果时,它总是返回 即使我返回一个json对象。 如何打印的结果?

  • 哪里需要从同级组件访问元素,但不需要从父 Cmp 访问元素。 例: 需要组件 B 的 templateA 中的 iframe 元素来隐藏 或删除该元素。 index.html ComponentA.html @组件 @组件

  • 我使用剑道网格和编辑器模板来显示我的数据。在编辑器中,我给了剑道下拉列表的DataValueField()id和DataTextField()名称。在更改事件中,我无法获取DataValueField()。请参阅下面的代码 这是我的编辑模板。chtml 这是我的更改功能 目前我的名字是ie;DataTextField()值。相反,我需要DataValueField()。提前感谢您的建议!

  • 我的程序需要使用变量分隔符读取具有不同数据结构的文件。在我的属性文件中,您可以设置分隔符并为不同变量的值放置坐标: 我想有一种方法可以访问具有某种坐标的列和线。 我在想这样的语法: (这将为您提供具有特定分隔符的第1行和第7列的值)有人知道可以做到这一点的库或代码片段吗?

  • 问题内容: 我已经搜索了几个小时,但找不到解决方案。 这不起作用: 好的,所以要清除一切。如果用户单击页面本身上的链接,这很容易,因为您可以向所有链接onclick事件添加事件处理程序,但是。我想捕获该地址,即用户在浏览器的url框中键入的内容。 问题答案: 因为这无法完成。新位置是私人/敏感信息。没有人希望您知道他们离开您的网站后会访问哪些网站。

  • 问题内容: 有没有一种方法可以在jQuery中获取鼠标滚轮事件(而不是谈论事件)? 问题答案: