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

Posted

技术标签:

【中文标题】将图标添加到角度材料输入【英文标题】:Add icon to angular material input 【发布时间】:2015-12-10 11:59:54 【问题描述】:

我正在尝试在 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- 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,我遇到了样式问题,并且没有任何工作正常。

知道如何简单地将搜索图标添加到现有输入吗?

【问题讨论】:

您想在哪里添加icon ?里面的表格? 嗯,在文本输入的左边或右边,最好是右边。 检查我在我的答案中添加了工作 plunker。 【参考方案1】:

这个问题很老了,但我今天早上刚遇到同样的问题,@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 中,否则图标会堆叠在输入的顶部。我在我的项目中使用 angular material v1.1.0 和 angular js v1.5.5。我希望这个答案可以帮助其他希望实现与 Angular Material 演示中相同的行为的人。

【讨论】:

【参考方案2】:

当您使用angular-material-designfont-awesome-icon 时,请使用&lt;md-icon&gt; 作为具有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>

【讨论】:

是的,我试过了,但是图标变小了,就像我们聚焦输入时输入的占位符一样。您可以在那里看到占位符的行为:material.angularjs.org/latest/#/demo/material.components.input 你添加了 class="md-icon-float" 吗?像这样&lt;md-input-container class="md-icon-float"&gt; 好吧,我在您编辑后也尝试过,但问题是内容的高度变得太大,并且我在输入内容中有一个滚动条。我想要一个带有图标的单行输入,就像上一个示例中的电子邮件一样:material.angularjs.org/latest/#/demo/material.components.input plunker 的示例和 angular-material 站点中的电子邮件输入没有区别。区别只是电子邮件没有标签但有占位符。我再次更新 Plunker。 是的,但我的有一个滚动条,这可能是因为它的父母之一:aside > section > md-tabs > md-tab > md-content > form > md-content > md-input-容器 > 输入

以上是关于将图标添加到角度材料输入的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 api 插入到材料选择输入角度

如何将上传图标修复为文件上传输入(材料 UI)

材料角度:自动滚动到无效输入并打开matstepper。

角度材料 - mat-error 不显示输入字段的错误消息

重新定位材料自动完成弹出图标

角度材料自动完成 - 如何防止键盘输入以在建议面板中选择一个选项