Avatar ·

Erro Angular @ViewChild: Expected 2 arguments, but got 1 — como corrigir?

Olá! Estou migrando do Angular 7 para o Angular 9 e me deparei com um erro estranho. Antes eu usava `@ViewChild()` assim: ```typescript @ViewChild('myDiv') myDiv: ElementRef; ``` Mas agora o compilador TypeScript mostra o erro: ``` Expected 2 arguments, but got 1. ``` Li que no Angular 8+ a assinatura do `@ViewChild` mudou. Tentei adicionar `{ static: false }` — o erro desapareceu. Mas não entendo bem o que isso significa. Quando devo usar `static: true` e quando `static: false`? Por exemplo, tenho um template com o elemento `
`, e quero acessá-lo em `ngAfterViewInit()`. Também tenho uma diretiva ``, que acesso em `ngOnInit()`. Por favor, me explique como usar `@ViewChild` corretamente nas novas versões do Angular. Por que é necessário passar o segundo argumento? E o que acontece se eu colocar `static: true` em todos os lugares? Obrigado! <<>>

Causa do erro e uso correto do @ViewChild no Angular