如何使用使用绑定属性的指令将一个元素附加到另一个元素?

alpa_chino

我在Angular 7中创建了一个指令,该指令将在输入中放置一个放大镜图标。我希望它像这样工作:

<input type="text" search-icon />

我目前正在使用超棒的字体。要以超棒的方式使用图标,您可以将图标导入组件,然后将该图标用作icon标签中的属性:

import {faSearch} from 'fontawesome/some/dir';

@Component({
    selector: 'app-component',
    template: '<fa-icon [icon]="faSearch"></fa-icon>',
    styleUrls: ['./app.component.sass']
})
export class AppComponent {
    faSearch = faSearch;

    constructor() {}
}

我面临的问题是不知道如何将属性添加[icon]<fa-icon>元素。

我试过创建这样的<fa-icon>元素:

const icon = document.createElement('fa-icon');

但是,我不知道如何添加[icon]属性。它需要绑定到faSearch变量,以便可以呈现它。

这是我到目前为止的内容:

import {Directive, ElementRef, Renderer2} from '@angular/core';
import {faSearch} from '@fortawesome/free-solid-svg-icons/faSearch';

@Directive({
    selector: '[search-icon]'
})
export class SearchDirective {

    constructor(private renderer: Renderer2, private elRef: ElementRef) {
        const icon = document.createElement('fa-icon');
        renderer.setAttribute(icon, '[icon]', 'faSearch');
        renderer.insertBefore(elRef.nativeElement.parentNode, icon, elRef.nativeElement);
    }

}

我希望这会将faSearch变量绑定[icon]属性,但是出现此控制台错误:

InvalidCharacterError: Failed to execute 'setAttribute' on 'Element': '[icon]' is not a valid attribute name

任何帮助,将不胜感激。

编辑

接受的答案实际上使我想到以不同的方式执行此操作,这就是为什么我接受了它。我最终在我的index.html文件中导入了font-awesome,并且刚刚创建了一个i标签,在其中我根据需要的图标设置了类。

拉维尔卡

我不知道这对您有多大适用性,但是我一直在这样做

<mat-form-field>
  <button mat-icon-button>
    <mat-icon mat-icon-button
          matPrefix>filter_list</mat-icon>
  </button>
  <input type="text"
         [(ngModel)]="value"/>
  <button mat-icon-button matSuffix>
    <mat-icon matSuffix (click)="myFunction()">close</mat-icon>
  </button>
</mat-form-field>

请注意,mat-prefix并且mat-suffix是左/右对齐所必需的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用另一个指令将指令添加到元素

无法使用 konva 将变压器附加到另一个类的元素

使用powershell将另一个子元素附加到xml

如何将现有的 html 元素附加到另一个元素?

如何使用python将一个csv文件附加到另一个

如何将列表中的匹配元素附加到另一个列表?

如何将一个列表的所有元素附加到另一个列表?

如何将ObservableArray属性与另一个dom元素绑定

如何创建属性指令以在 AngularJS 的元素中插入另一个属性指令

将列表(元素)附加到另一个列表中,按字母给出一个元素

试图将一个Polymer元素附加到另一个Polymer元素中

将一个列表的每个命名元素附加到另一个列表的相同命名元素

使用 jQuery 复制 div 并附加到一组元素中的另一个元素

如何将多维数组中的元素附加到另一个多维数组的每个元素

使用CSS / HTML将一个元素移到另一个元素之前

剔除JS将元素的属性绑定到另一个元素

使用CSS单击另一个元素时如何显示一个元素?

如何使用 Ruby 将一个哈希值附加到另一个哈希值

如何使用jQuery将一个元素相对于另一个元素定位?

如何使用 jquery 将显示的文本从一个元素应用到另一个元素

无论值如何,使用jQuery将一个元素放置在另一个元素旁边

如何绑定到指令中另一个元素的“ keydown”

如何将重复的元素附加到同一父元素的另一个元素中的不同父元素中

如何使用for循环将列表附加到另一个列表

如何使用Javascript将div附加到另一个div的右侧或左侧?

如何使用css / Extjs将元素悬停在另一个元素上

如何使用JavaScript将内联html元素替换为另一个html元素?

将DatePicker附加到另一个UI元素

将另一个numpy数组附加到numpy数组作为数组,而不是元素