Я пытаюсь разработать канал для замены определенных ключевых слов правильными строками. Чтобы иметь чистую структуру для этого канала, я пытаюсь сохранить мои ключевые слова и строку в другом файле, и вот код:
import { Injectable } from '@angular/core';
import { AdvEnDictionary } from './advertiser-dict/adv-en-dictionary';
import { AdvFaDictionary } from './advertiser-dict/adv-fa-dictionary';
@Injectable()
export class AdvertiserDictionary {
constructor(
private advEnDictionary: AdvEnDictionary['words'],
private advFaDictionary: AdvFaDictionary['words']
) {}
getString(keyword:string, lang:string) {
switch(lang) {
case 'fa':
return this.advFaDictionary[keyword];
break;
case 'en':
return this.advEnDictionary[keyword];
break;
default:
return this.advFaDictionary[keyword];
}
}
}
И труба:
import { Pipe, PipeTransform } from '@angular/core';
import { CookieService } from 'ngx-cookie';
import { AdvertiserDictionary } from '../classes/advertiser-dictionary';
import { PublisherDictionary } from '../classes/publisher-dictionary';
@Pipe({
name: 'translation'
})
export class TranslationPipe implements PipeTransform {
constructor(private cookieService: CookieService,
private advertiserDictionary: AdvertiserDictionary,
private publisherDictionary: PublisherDictionary,
) {}
transform(value: string, args?: any): any {
var [prefix, keyword] = value.split("-");
var lang = this.cookieService.get("lang");
switch(prefix.toLowerCase()) {
case 'pub':
return this.publisherDictionary.getString(
keyword.toUpperCase(),
lang
);
break;
case 'adv':
return this.advertiserDictionary.getString(
keyword.toUpperCase(),
lang
);
break;
}
}
}
И что я продолжаю получать в разных сценариях:
- Когда я просто добавляю класс в канал, я получаю сообщение об ошибке «Нет провайдера» для классов
- Когда я добавляю класс в поставщики модулей, я получаю «недопустимые аргументы» для класса, а также я не хочу, чтобы этот класс был во всем приложении, я просто хочу, чтобы он использовался в моей трубе.