如何在 angular material 自动完成的末尾添加 link?

How can I have a link at the end of an angular material autocomplete?

我想在 angular material 自动完成的末尾添加一个 link。我需要 link 始终可见。我通过创建一个劫持 "md-not-found" 元素并始终显示它的指令找到了一种解决方法。这是它的外观示例:

https://plnkr.co/edit/5tfjYfrT59xx47k3Idke?p=preview

第一次聚焦时,它看起来与我想要实现的完全一样。 link "Create User" 出现在所有结果之后。然后在搜索之后,假设 "a",自动完成结果框缩小到 1 个元素并且永远不会恢复到完整高度。

我该如何解决这个问题?或者有其他方法可以做我想做的事吗?

请记住,这只是一个例子,我并不是真的想那样即时创建用户。

非常感谢。

这是指令:

(function () {
    'use strict';

    angular.module('app').directive('notFoundAlwaysVisible', notFoundAlwaysVisible)

    notFoundAlwaysVisible.$inject = ['$rootScope'];

    function notFoundAlwaysVisible($rootScope) {
        return {
            restrict: 'A',
            require: '^mdAutocomplete',            
            replace: true,
            template: '',
            link: function (scope, element, attrs, parentCtrl) {
                parentCtrl.notFoundVisible = function () { return true; }
                return '';
            }
        }
    }
})();

这是我的带有新指令的自动完成元素:

<md-autocomplete md-no-cache="true" 
                    not-found-always-visible
                    md-selected-item="ctrl.item" 
                    md-items="item in ctrl.querySearch(ctrl.searchText)" 
                    md-search-text="ctrl.searchText" 
                    md-item-text="item.Name" 
                    md-min-length="0" 
                    md-floating-label="Username" 
                    md-select-on-match="true"
                    md-match-case-insensitive="true">
      <md-item-template>
        <div>
          <span md-highlight-text="ctrl.searchText">{{ item.Name }}</span>
        </div>
      </md-item-template>
      <md-not-found>
        <a href="#">Create User {{ ctrl.searchText }}</a>
      </md-not-found>
    </md-autocomplete>

看看 this 是否有帮助。您可以在结果末尾添加 link 并为该 link 拥有自己的样式表。

<md-autocomplete ng-disabled="ctrl.isDisabled" md-no-cache="ctrl.noCache" md-selected-item="ctrl.selectedItem" md-search-text-change="ctrl.searchTextChange(ctrl.searchText)" md-search-text="ctrl.searchText" md-selected-item-change="ctrl.selectedItemChange(item)" md-items="item in (ctrl.querySearch(ctrl.searchText).concat(ctrl.footerOption))" 
       md-item-text="item.display" md-min-length="0" placeholder="What is your favorite US state?"  md-menu-class="autocomplete-custom-template">
        <md-item-template>
         <div ng-class="{fixed:item.isFooter}">
           <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item.display}}</span>
          </div>
        </md-item-template>
        <md-not-found>
          No states matching "{{ctrl.searchText}}" were found.
          <a ng-click="ctrl.newState(ctrl.searchText)">Create a new one!</a>
        </md-not-found>
      </md-autocomplete>

您可以像这样跟踪页脚,

function selectedItemChange(item) {
      if (item) {
        if (item.isFooter)
           $log.info('footer selected, creating a new'  + JSON.stringify(item));           
        else           
          $log.info('Item changed to ' + JSON.stringify(item));           
      }
    }