Angular2: невозможно привязать к «ngPluralCase», так как это неизвестное свойство «x»

Во-первых, этот вопрос не повторяется, большинство ответов на такие вопросы, как "Не удается привязать к 'x'...", относятся к неимпортированным модулям, я уже импортировал нужный(е) ).

Я следую документу angular.io о ngPlural и директивы ngPluralCase:

<some-element [ngPlural]="value">
  <ng-container *ngPluralCase="'=0'">...</ng-container>
  <ng-container *ngPluralCase="'other'">...</ng-container>
</some-element>

(...)

экспортируется из @angular/common/index, определенного в @angular/common/src/directives/ng_plural.ts

Когда я пытаюсь запустить этот код, я получаю сообщение об ошибке (см. в plnkr):

Невозможно выполнить привязку к ngPluralCase, так как это неизвестное свойство ng-container.

main.ts :

import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
import { Component, NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";

@Component({
  selector: "my-app",
  template:`
  <div [ngPlural]="1">
      <ng-container *ngPluralCase="'=0'">...</ng-container>
      <ng-container *ngPluralCase="'other'">...</ng-container>
  </div>
  `,
  styles: []
})
class AppComponent {

}

@NgModule({
  imports: [
    BrowserModule
  ],
  declarations: [AppComponent],
  exports: [AppComponent],
  bootstrap: [AppComponent]
})
class AppModule { }


platformBrowserDynamic().bootstrapModule(AppModule);

Я импортировал BrowserModule (который экспортирует CommonModule, но я также пытался импортировать CommonModule напрямую) в свой AppModule, и, как видите, ошибка касается ngPluralCase, а не ngPlural, который находится в том же модуле и используется без проблем...

Итак, мой вопрос:

Кто-нибудь знает, что здесь происходит? Это ошибка, связанная с «экспериментальным» состоянием этих директив, или я что-то упустил?

PS: я использую angular v2.1.0


person n00dl3    schedule 18.10.2016    source источник
comment
Я вижу, вы открыли тему, хороший звонок. По какой-то причине мне не удалось использовать его таким образом, но я успешно использовал его как <template ngPluralCase="other"> (тоже немного короче). Вопрос здесь до сих пор не получил четкого ответа.   -  person Estus Flask    schedule 18.10.2016


Ответы (2)


На данный момент я открыл вопрос в репозитории Github, потому что он действительно кажется сломанным. ...

Изменить Это ответ, который я получил из моей проблемы на Github:

Проблема здесь в том, что директива NgPluralCase использует инъекцию @Attribute, и поскольку ng-container являются виртуальными узлами, атрибуты не могут быть извлечены из них.

В этом случае вы должны использовать тег <template>, документы будут исправлены как часть отложенного PR.

person n00dl3    schedule 17.11.2016

Ответ: angular.io сейчас устарел, по крайней мере пример NgPlural.
Пример ниже работает с версией 2.4.4:

<some-element [ngPlural]="value">
  <template ngPluralCase="=0">there is nothing</template>
  <template ngPluralCase="=1">there is one</template>
  <template ngPluralCase="few">there are a few</template>
</some-element>
person Rakhat    schedule 19.01.2017