Как вызвать класс в пользовательском канале angular

#angular #class #pipe

#angular #класс #канал

Вопрос:

Привет, ниже приведен мой пользовательский код канала

 import { Pipe, PipeTransform } from '@angular/core';
// Here I need to import my another class
@Pipe({ name: 'creativeType' })

export class Creativepipe implements PipeTransform {

transform(value:any)
{
   if(value)
   {
      //execution
   }
}
}
  

И я создал отдельный класс, в котором я объявил все константы моего проекта, почти более 1000, мне нужно вызвать мой класс в модуле пользовательских каналов, ниже приведен мой класс,

 export class HouseAd {

public M_IG = "Some Value";
public M_IF = "Some Value";
........
........
........
  

}
Я попытался импортировать класс и создать экземпляр для этого и получить доступ, который означает, что показывает неопределенное значение, кто-нибудь поможет решить мою проблему

Комментарии:

1. импортируйте класс в свой канал и перенаправьте переменную use class const с помощью «Classname.variableName»

Ответ №1:

Если они являются константами, вам лучше использовать enum :

 export enum HouseAd {
  M_IG = 'Some value',
  // ...
}
  

К которому вы можете получить доступ в любом месте, если вы его импортируете:

 transform(value:any) {
   if(value === HouseAd.M_IG) {
      //execution
   }
}
  

Комментарии:

1. @PierreDuc Я использовал концепцию InjectToken для внедрения моего файла констант, чтобы я мог использовать их и в HTML-файлах. Есть ли лучший способ сделать это?

2. @MayurPatil возможно, InjectionToken — это угловой способ сделать это, но это большая абстракция. Преимущество, которое вы получаете при этом, заключается в том, что вы можете легко переопределить константы с помощью provide . Если в этом нет необходимости, вы можете просто сохранить его в файле enum, а для доступа внутри html вы можете использовать общедоступное свойство компонента: public constants = Constants

Ответ №2:

Для того, чтобы внедрить класс, он должен быть Injectable :

 @Injectable({
  providedIn: 'root' // Only available with angular 6 , else add it to providers
})

export class HouseAd {

  public M_IG = "Some Value";
  public M_IF = "Some Value";
}
  

Комментарии:

1. спасибо за ваш ответ, но у меня это не сработало, если переменная доступа в классе означает, что show не существует

2. @Thiyagarajan Вы использовали введенное свойство, а не имя класса, когда пытались получить к нему доступ?