В большинстве случаев вы захотите использовать {static: false}
. Установка этого параметра гарантирует, что будут найдены совпадения запросов, которые зависят от разрешения привязки (например, структурные директивы *ngIf, etc...
).
Пример использования static: false
:
@Component({
template: `
<div *ngIf="showMe" #viewMe>Am I here?</div>
<button (click)="showMe = !showMe"></button>
`
})
export class ExampleComponent {
@ViewChild('viewMe', { static: false })
viewMe?: ElementRef<HTMLElement>;
showMe = false;
}
static: false
будет стандартным вариантом отката в Angular 9. Подробнее здесь и здесь
Опция { static: true }
была введена для поддержки создания встроенных представлений на лету. Когда вы динамически создаете представление и хотите получить доступ к TemplateRef
, вы не сможете сделать это в ngAfterViewInit
, так как это приведет к ошибке ExpressionHasChangedAfterChecked
. Установка статического флага в true создаст ваше представление в ngOnInit.
Тем не менее:
В большинстве других случаев рекомендуется использовать {static: false}
.
Имейте в виду, что опция { static: false }
будет установлена по умолчанию в Angular 9. Это означает, что установка статического флага больше не требуется, если вы не хотите использовать опцию static: true
.
Вы можете использовать команду angular cli ng update
для автоматического обновления вашей текущей кодовой базы.
Для руководства по миграции и даже дополнительной информации об этом вы можете проверить здесь