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

角度2(更改)事件未触发

宗政安歌
2023-03-14

我的组件具有以下功能:

onProductSelect(e){
        var attrs = document.getElementById('firstAttr');        
        return this.groupComponentSvs.getProduct(e.target.value)
                      .subscribe(
                            selectProduct=>{                                
                                this.selectProduct=selectProduct; 
                                var select = "<select class='form-control' id='"+ selectProduct.attribute +"' (change)='selectNextAttr($event)' name='selectProd'>";
                                console.log(select);
                                    select+= '<option value="0">Select</option>';
                                for (var i=0; i<selectProduct.values.length; i++)  {
                                    select+= '<option value='+ selectProduct.values[i]+ '>'+ selectProduct.values[i] +'</option>';
                                }  
                                select+='</select>' ;                                
                                attrs.innerHTML = '<div id=attr_'+ selectProduct.attribute +'>'+ select +'</div>';                              
                                error=>this.errorMessage = <any>error
                            }                            
                )                 

    }

selectNextAttr(attr, val){
 console.log("this is a test");
}

我可以在我的html页面中插入选择菜单,但更改事件不会在我选择项目时触发。有人能让我知道为什么会发生这种情况吗?

谢谢

共有3个答案

百里朝
2023-03-14

您应该使用ngModelChange,而不是change

 "<select class='form-control' id='"+ selectProduct.attribute +"' (ngModelChange)='selectNextAttr($event)' name='selectProd'>"
胡鸿志
2023-03-14

检查这个答案:https://stackoverflow.com/a/33716321/2114024

尝试:

<select [ngModel]='selectedProduct' 
        class='form-control' 
        [id]='"+ selectProduct.attribute +"' 
        (ngModelChange)='selectNextAttr($event)' name='selectProd'>
胡墨竹
2023-03-14

使用“…”添加HTML,并且不会为此类HTML创建绑定、组件和指令。Angular对此类HTML所做的唯一一件事就是出于安全目的进行清理。

因此,您不能使用ngModel=“..” 或<代码>(ngModelChange)=“…”

处理此类需求的一种方法是在运行时动态创建组件,并使用创建的HTML作为此类组件的模板。请参阅Angular 2中的等效$compile,了解如何实现这一点。

 类似资料:
  • 更改事件仅在输入的焦点更改后调用。如何使事件在每次按键时触发? 第二个绑定在每个按键上改变btw。

  • 问题内容: 我在ui网格的columDefs中使用headerCellTemplate(不是ng- grid,而是新的重写)。在html中,我有一个复选框。本质上,我试图在作为所有复选框的列的标题中添加一个复选框,以便可以检查所有/无。带有复选框的单元格可以正常显示。问题在于标题中复选框中的ng- change永远不会触发该事件。另外,ng- model值永远不会改变。查看代码,有一个名为uiGr

  • 当用户滑动滑块时,我试图触发一个事件,当滑动停止时,该值会更改。根据jQuery文档,对于这种情况,事件是理想的选择。所以我正在尝试: 然而,我观察到,当我向右拖动滑块并再次将其拖回起点(页面加载时滑块的初始位置)时,警报仍会触发。这是jQuery错误吗?如果没有,我该如何解决这个问题?

  • 问题内容: 有什么方法可以在属性更改时触发事件(可能是自定义的)? 比方说,当IMG src更改或DIV的innerHtml吗? 问题答案: 注意:突变事件已从标准中删除,现已弃用。有关如何使用其替代内容的信息,请参见其他答案或文档。 您指的是DOM突变事件。浏览器对这些事件的支持较差(但正在改善)。jQuery的MutationEvents插件可能会为您提供一些帮助。

  • 问题内容: 输入如下: 当我手动键入并更改输入时,将执行。但是,如果我以编程方式通过其他功能更改了repair.test值,则不会触发ng- change的操作。我已经阅读了角度教程,这可能是预期的行为。 https://docs.angularjs.org/api/ng/directive/ng更改 “当值更改来自模型时,不评估表达式。” <-我也需要这个。模型以任何方式更改时,如何在控制器中触

  • 每当选择项目时,我都必须传递选项的值。但在我的事件发生后,传递的值总是未定义的。我的代码如下: 我的angular2代码如下: 问题是,每当选项发生任何更改时,传递给handle函数的参数(值)总是“未定义”。 在这一行中,参数“value”的值始终未定义。 请帮帮忙! 提前感谢!