Для компонента, подобного I18n, я хочу получить содержимое компонента как строку, чтобы иметь запасное значение, если моя служба I18n ничего не получает, это значение должно быть резервным.Получить компонент child как строку
I18n сервис get
метод:
public get(key:string,
defaultValue?:string,
variables:Variables = {},
domain?:string):string {
for (let catalogue of this.catalogues) {
if (catalogue.getDomains().indexOf(domain) >= 0
&& catalogue.getLocale() == this.locale
&& catalogue.hasKey(key)) {
return I18n.setVariables(catalogue.get(key, domain, defaultValue).value, variables);
}
}
return defaultValue;
}
I18nComponent:
@Component({
selector: "i18n",
template: "{{text}}",
})
export class I18nComponent implements OnInit {
constructor(private i18n:I18n) {
}
@ContentChild() content:string; //Here, I want to store actual value as fallback one.
@Input('key') key:string;
@Input('domain') domain:string;
@Input('variables')
variables:Variables = [];
@Input("plural")
plural:number;
text:string;
ngOnInit():any {
console.log(this.content); //Here I get 'undefined'
if (this.plural !== undefined && this.plural != null) {
this.text = this.i18n.get(this.key, this.content, this.variables, this.domain);
} else {
this.text = this.i18n.getPlural(this.key, this.plural, this.content, this.variables, this.domain);
}
}
}
Пример использования:
<i18n key="FOO_KEY" domain="stackoverflow">I'm the default value !</i18n>
Я знаю <ng-content></ng-content>
работает, но только на логике шаблона, мне нужен способ чтобы получить дочерние строки в машинописном тексте.
Уже пробовали @ContentChild(String)
, но я получил undefined
.
Другим способом было бы сделать это как строку «Загрузка ...», которую вы можете иметь в базе app
компонент в индексе, действуя как заполнитель, пока не получите все загруженное. Я мог бы сделать то же самое для I18n, позвольте кружевнику здесь, пока я не получу что-то из службы, чтобы заменить его, но я не знаю, как этого добиться.
Я не понимаю, что вы пытаетесь достичь. Как это связано с вашим сервисом I18n? Почему бы просто не поместить обратно запасное значение в класс, а затем связать его с сервисом, а если нет, то резерв? –
Я не могу установить запасное значение в классе, потому что это не одно и то же каждый раз. У меня есть один резерв для каждого использования компонента i18n, и он может включать теги html. (пример: 'Вы выиграли ' -> fallback = 'Вы выиграли'). Резервное копирование здесь «на всякий случай», тогда, если я не получу стоимость через услугу, я покажу английский (резервный). –
Supamiu
Можете ли вы добавить полный пример. Я не понимаю, что именно вы пытаетесь выполнить. –