#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 Вы использовали введенное свойство, а не имя класса, когда пытались получить к нему доступ?