将图标添加到角度材质输入

时间:2015-09-14 13:02:58

标签: javascript html css angularjs angular-material

我正在尝试将搜索图标添加到Angular Material中的输入搜索栏:

<aside class="main-sidebar">
    <section class="sidebar control-sidebar-dark" id="leftMenu">
        <div>
            <!--  need to disable overflow-x somehow cuz of menu -->
            <md-tabs md-center-tabs id="menuTabs" md-dynamic-height="true" md-selected="selectedIndex">

                <md-tab label="<i class='fa fa-search'></i>" ng-if="handleResize()" search-Focus>
                    <md-content class="control-sidebar-dark" ng-style="{'height' : menuHeight}">
                        <!-- search Menu -->
                        <div>
                            <div>
                                <form action="javascript:void(0)" method="get" class="sidebar-form" id="searchForm">
                                    <div>
                                    <md-content md-theme="docs-dark">
                                        <md-input-container style="padding-bottom: 5px;">
                                            <label>{{isEnglish ? 'Search...' : 'Recherche...'}}</label>
                                            <input ng-model="searchInput" id="sInput" ng-change="filterCartoList(searchInput)" my-enter="filterCartoList(searchInput)">
                                        </md-input-container>
                                    </md-content>
                                    </div>

                                </form>
                                <div>

当我尝试使用我们可以在那里看到的图标重现示例:http://codepen.io/anon/pen/rOxMdR时,我遇到了样式问题而且无法正常工作。

我知道如何在现有输入中添加搜索图标吗?

2 个答案:

答案 0 :(得分:3)

当您使用angular-material-designfont-awesome-icon时,使用<md-icon>作为md-font-icon属性的元素。

并将class="md-icon-float"md-inout-container一起使用。

工作plunker

改变这个:

<md-content md-theme="docs-dark">
    <md-input-container style="padding-bottom: 5px;">
        <label>{{isEnglish ? 'Search...' : 'Recherche...'}}</label>
        <input ng-model="searchInput" id="sInput" ng-change="filterCartoList(searchInput)" my-enter="filterCartoList(searchInput)">
    </md-input-container>
</md-content>

致:

<md-content md-theme="docs-dark">
    <md-input-container class="md-icon-float">
        <label>{{isEnglish ? 'Search...' : 'Recherche...'}}</label>
        <md-icon md-font-icon="fa fa-search"></md-icon>
        <input ng-model="searchInput" id="sInput" ng-change="filterCartoList(searchInput)" my-enter="filterCartoList(searchInput)">
    </md-input-container>
</md-content>

答案 1 :(得分:0)

这个问题很老但我今天早上遇到了同样的问题,@ gaurav的答案与OP在此链接中寻找的内容不同:https://material.angularjs.org/latest/#/demo/material.components.input

如果您打开Chrome开发者控制台,则可以检查该元素,并查看编写演示代码的人员是否在底部图标部分使用自定义类来处理电子邮件输入的图标行为。我基本上复制了这种行为以达到同样的预期效果。

HTML:

<md-input-container class="md-block md-icon-left">
    <md-icon class="form-icon">lock_outline</md-icon>
    <label>Password</label>
    <input 
        type="password" ng-model="user.password" name="password" 
        ng-required="true" 
        ng-keyup="$event.keyCode == 13 && loginForm.$valid && login()"/>
</md-input-container>

CSS:

/* Angular extension */
md-input-container.md-input-invalid > md-icon.form-icon {
  color: #B71C1C;
}

需要注意的一点是,我必须将类“md-icon-left”添加到我的md-container中,否则图标将堆叠在输入的顶部。我在我的项目中使用角度材料v1.1.0和角度js v1.5.5。我希望这个答案可以帮助其他任何想要达到与Angular Material演示相同行为的人。