детали поведения let и const в ngFor - PullRequest
0 голосов
/ 30 апреля 2018

Я работал с неожиданным поведением модификатора const в выражении Angular 2 ngFor.

Предполагая, что у меня есть следующий базовый код:

interface Foo {
    name: string;
    list: string[];
}

@Component({ ... })
class FooComponent() {
    @Input foo: Foo;
    @Input list: string[];
}

Использование const в следующем шаблоне будет вполне приемлемо во время компиляции и во время выполнения.

<li *ngFor="const element of list"> ... </li>

Теперь, если мы используем SlicePipe, const больше не работает, и компилятор Typescript вызывает ошибку на токене |.

<li *ngFor="const element of list | slice:0:3"> ... </li>
                                  ^ unexpected token
<li *ngFor="let element of list | slice:0:3"><!-- completely fine --></li>

Я ожидал, что труба будет применена к списку, и единственная причина, по которой я могу найти const недействительной, заключается в том, что срез применяется к элементу, а не к списку (что странно, нет?).

Однако самое интересное было при попытке перебрать Foo.list с помощью const.

<li *ngFor="const element of foo.list"> ... </li>
                                ^ unexpected token
<li *ngFor="let element of foo.list"><!-- completely fine --></li>

Когда мы должны использовать const тогда? Почему мы должны использовать let в этих ситуациях?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...