Angular 管道';安全';找不到离子4

Angular 管道';安全';找不到离子4,angular,typescript,pipe,ionic4,Angular,Typescript,Pipe,Ionic4,我正在使用管道清理ionic 4应用程序中的受信任资源URL 安全管道 import { Pipe, PipeTransform } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser'; @Pipe({ name: 'safe' }) export class SafePipe implements PipeTransform { constructor(private sani

我正在使用管道清理ionic 4应用程序中的受信任资源URL

安全管道

import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';

@Pipe({
  name: 'safe'
})
export class SafePipe implements PipeTransform {

  constructor(private sanitizer: DomSanitizer) {}

  transform(url: string) {
    return this.sanitizer.bypassSecurityTrustResourceUrl(url);
  }

}
app.module.ts

import { SafePipe } from './services/safe.pipe';<---------

@NgModule({
  declarations: [AppComponent, SafePipe],<----------
  entryComponents: [],
  imports: [
    BrowserModule, 
    IonicModule.forRoot(), 
    AppRoutingModule, 
    HttpClientModule
  ],
  providers: [
    StatusBar,
    SplashScreen,
    SafePipe <----------
    { ...
控制台错误。。。错误:找不到管道“安全”


在谷歌搜索之后,我遵循了一个关于这个的教程,并向提供商添加了SafePipe,我在这里遗漏了什么??谢谢

无需将
管道
添加到
提供程序
。只需确保在同一模块中声明的组件中使用
SafePipe
,或者该组件的模块应导入声明并导出
SafePipe
的模块

我可以看到您在
AppModule
中声明了
SafePipe
,并在
MyPageComponent
中使用了它

您需要创建一个
SharedModule
,并在此ShareModule中声明和导出
SafePipe
。将此
SharedModule
导入到要使用此
管道的模块中

添加更多可在整个应用程序中使用的组件或管道

下面是一个stackblitz演示,演示如何使用SharedModule:


A
管道
不必添加到
提供程序
。只需确保在同一模块中声明的组件中使用
SafePipe
,或者该组件的模块应导入声明并导出
SafePipe
的模块

我可以看到您在
AppModule
中声明了
SafePipe
,并在
MyPageComponent
中使用了它

您需要创建一个
SharedModule
,并在此ShareModule中声明和导出
SafePipe
。将此
SharedModule
导入到要使用此
管道的模块中

添加更多可在整个应用程序中使用的组件或管道

下面是一个stackblitz演示,演示如何使用SharedModule:


难道没有办法从app.module中声明这样一个简单的管道,并在整个app中“全局”引用它吗?在应用程序的每个页面中声明的sharedmodule组件中声明一个管道似乎很复杂。只是为了清理资源url?任何代码示例供参考,谢谢;)另外,您提到需要创建一个声明和导出SafePipe的SharedModule。safe.pipe.ts组件不是基本上就是这个组件吗,因为它是声明和导出它的地方,我正在尝试将它导入app.module以便在应用程序的任何地方使用?如果有人能在代码中给我一个简单的例子,正确的方法来设置这个管道将不胜感激。。谢谢,Yasht没有办法将管道声明为全局管道。这就是为什么当您想要使用共享组件、管道或其他组件时,您要定义SharedModule并将其导入到模块中。您好@RayAndison,很高兴知道它起了作用。我不知道
DomSantitizer
是如何工作的,但我可以检查一下。你可以发布另一个问题,因为我不熟悉
DomSantitizer
,所以不确定我是否能帮上忙,但我会检查它。再次感谢,这里发布的消毒器错误。没有办法从app.module声明这样一个简单的管道,并在整个应用程序中“全局”提供它作为参考吗?在应用程序的每个页面中声明的sharedmodule组件中声明一个管道似乎很复杂。只是为了清理资源url?任何代码示例供参考,谢谢;)另外,您提到需要创建一个声明和导出SafePipe的SharedModule。safe.pipe.ts组件不是基本上就是这个组件吗,因为它是声明和导出它的地方,我正在尝试将它导入app.module以便在应用程序的任何地方使用?如果有人能在代码中给我一个简单的例子,正确的方法来设置这个管道将不胜感激。。谢谢,Yasht没有办法将管道声明为全局管道。这就是为什么当您想要使用共享组件、管道或其他组件时,您要定义SharedModule并将其导入到模块中。您好@RayAndison,很高兴知道它起了作用。我不知道
DomSantitizer
是如何工作的,但我可以检查一下。您可以发布另一个问题,因为我不熟悉
DomSantitizer
,所以不确定我是否能提供帮助,但我会检查它。再次感谢,在这里发布了“消毒器错误”
... [data]="urlData | safe" ...