【问题标题】:How to use custom component inside PipeTransform in Angular 2?如何在 Angular 2 中的 PipeTransform 中使用自定义组件?
【发布时间】:2017-06-28 14:28:54
【问题描述】:

我想在管道变换中使用我的自定义组件 Status,但它不起作用。

浏览器只显示没有< Status /> 的值。好像我的组件没有被调用。

为什么?请问怎么解决?

组件状态已添加到应用模块中。

status.pipe.ts

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'status'
})
export class StatusPipe implements PipeTransform {

  transform(value: any): string {
    let status = '<Status type="ok"><b>' + value + '</b></Status>';
    return status;
  }

}

index.html

<td [innerHtml]="result.status | status"></td>

status.component.ts

import { Component, ViewEncapsulation, Input } from '@angular/core';

@Component({
   selector: 'Status',
    template: '<span class="status status--{{ type }}">
      <span class="status__message">
         <ng-content></ng-content>
      </span>
   </span>',
   styleUrls: ['./status.component.css'],
   encapsulation: ViewEncapsulation.None

})
export class StatusComponent {

    @Input() type:any;    

}

【问题讨论】:

  • 这不是管道的用途或使用方法。
  • 你能详细说明你的问题吗?我不确定我是否得到了你想要在这里做的事情。

标签: javascript angular angular2-template angular-pipe


【解决方案1】:

因为当它应该是文本值时,你试图给它 HTML 值。

试试这个:

<span [innerHTML]="yourValue | status"></span>

代替

<span>{{yourValue | status}}</span>

【讨论】:

  • 谢谢,但我已经在使用 。 “”有效。
  • 请编辑您的帖子以显示您如何称呼您的管道。您是否声明了您的管道并导出了它?
  • 完成。一切都已声明。
  • 因为它是innerHTML,而不是innerHtml
  • 对不起,我没有明白这一点。你不能,管道在构建后被转换。您需要使用组件,而不是管道。
猜你喜欢
  • 2018-02-21
  • 1970-01-01
  • 2017-06-27
  • 2017-08-23
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
相关资源
最近更新 更多