Angular material md芯片和md自动完成输入字段

Angular material md芯片和md自动完成输入字段,angular-material,md-autocomplete,md-chip,Angular Material,Md Autocomplete,Md Chip,当用户使用md芯片输入时,焦点被移除,输入仍然存在。一旦焦点被移除,有没有办法删除任何不是芯片的条目? 通常,您应该能够通过使用ng blur来执行此操作,但由于某些原因,该指令在与md autocomplete一起使用时存在问题: 但我试图以不同的方式解决它,这不是最正确的方法,但它是有效的。您需要做的是在input中用md autocomplete绑定事件。在这种情况下,您必须清除md autocomplete的searchText。因此,只需在控制器中以某种方式绑定该事件: angular

当用户使用md芯片输入时,焦点被移除,输入仍然存在。一旦焦点被移除,有没有办法删除任何不是芯片的条目?

通常,您应该能够通过使用
ng blur
来执行此操作,但由于某些原因,该指令在与
md autocomplete
一起使用时存在问题:

但我试图以不同的方式解决它,这不是最正确的方法,但它是有效的。您需要做的是在
input
中用
md autocomplete
绑定事件。在这种情况下,您必须清除md autocomplete的searchText。因此,只需在控制器中以某种方式绑定该事件:

angular.element(document.querySelector('md-autocomplete input')).bind('blur', 
    function(){ 
        setTimeout(function(){
            angular.element(document.querySelector('md-autocomplete')).scope().ctrl.searchText = ''; 
            angular.element(document.querySelector('md-autocomplete')).scope().$apply();
        }, 300);
    }
)
我使用timeout的原因是,如果searchText变量清除得太快,则没有添加芯片。但当我加上300毫秒的延迟时,它就如我预期的那样工作了。当然有更好的方法,但试着这样做,也许对你来说就足够了


这是工作代码笔:

谢谢Patryk的回复。它似乎不起作用。该函数从未在我的控制器中被调用。我想这可能是因为我使用控制器作为语法。vm=这个;因此,当我用vm.searchText替换ctrl.searchText时,它似乎没有任何效果。请尝试在浏览器控制台中进行试验。尝试使用`angular.element(document.querySelector('md-autocomplete')).scope()`并检查哪个变量是您的控制器,确保您有正确的搜索文本变量。此外,如果您附加代码,将更容易帮助您:)plunkr,codepen或jsfiddle会更有帮助我已经将其附加到原始帖子中如果您在键入“angular.element(document.querySelector('md-autocomplete')).scope().containerVisibility.searchLoadId”后可以在浏览器控制台中看到正确的值,那么我不知道如何帮助您:(这是唯一一个我认为可能有问题的地方……特别是“containervibility”看起来很奇怪,但我相信您已经检查过了。或者尝试创建plunker、jsfiddler或类似的问题?通过阅读您的代码,我看不出任何问题。。。