i18n для атрибутов с плюрализацией / выбором в Angular 7 - PullRequest
1 голос
/ 03 июля 2019

Краткий вопрос

Можно ли использовать элемент ввода, в котором текст заполнителя изменяется в зависимости от состояния компонента?

Более длинный вопрос

Angular имеет возможность добавить i18n с помощью следующего примера синтаксиса:

<input i18n-placeholder placeholder="default placeholder" />

Также имеется возможность добавить множественное числоправила в следующем примере синтаксиса:

<span i18n>
    Updated {minutes, plural, =0 {just now} =1 {one minute ago} other {{{minutes}} minutes ago}}
</span>

Я попытался объединить эти две функции, чтобы текст заполнителя изменялся в зависимости от состояния компонента.Шаблон компонента содержит следующий html:

<input i18n-placeholder placeholder="Add {stuff.length, plural, =0 {} other {more}} stuff..." />

Я ожидаю, что заполнитель скажет Add stuff... в единственном числе и Add more stuff... во множественном числе, но все, что я получаю в заполнителе, это Add.

Есть ли способ получить плюрализированный i18n в атрибутах html, не копируя элемент и не используя *ngIf?

Вот блик стека с рабочим примером

1 Ответ

2 голосов
/ 03 июля 2019

Это на самом деле не имеет ничего общего с i18n.Это только показывает, что Angular, кажется, не в состоянии правильно анализировать и обрабатывать выражения множественного числа внутри атрибутов.

A (относительно грязный) обходной путь состоит в том, чтобы просто поместить это выражение в невидимоеDOM-узел (например, шаблон) для i18n этого dom-узла и для вставки текста этого DOM-узла в заполнитель:

<input #myInput [placeholder]="ph.innerText">

<template #ph i18n>Add {stuff.length, plural, =0 {} other {more}} stuff...</template>
...