Angular 9 @ViewChild-Fehler beheben: Expected 2 arguments, but got 1: An argument for 'opts' was not provided.

English Deutsch

Problem:

Sie versuchen, Ihre Angular 9.x-Anwendung zu kompilieren, aber Sie sehen eine Fehlermeldung wie

viewchild_error.txt
app/my-component/my-component.component.ts:24:4 - error TS2554: Expected 2 arguments, but got 1.

24   @ViewChild(MyOtherComponent) myOtherComponent: MyOtherComponent;
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  ../node_modules/@angular/core/core.d.ts:7888:47
    7888     (selector: Type<any> | Function | string, opts: {
                                                       ~~~~~~~
    7889         read?: any;
         ~~~~~~~~~~~~~~~~~~~
    7890         static: boolean;
         ~~~~~~~~~~~~~~~~~~~~~~~~
    7891     }): any;
         ~~~~~
    An argument for 'opts' was not provided.

Lösung

Finden Sie diese Zeile in Ihrem Code an der in der Fehlermeldung angegebenen Position:

viewchild_wrong.ts
@ViewChild(MyOtherComponent) myOtherComponent: MyOtherComponent;

und fügen Sie

viewchild_opts.ts
{static: false}

als zweites Argument zur @ViewChild()-Deklaration hinzu:

viewchild_fixed.ts
@ViewChild(MyOtherComponent, {static: false}) myOtherComponent: MyOtherComponent;

In den meisten Fällen möchten Sie static: false verwenden. Siehe diesen Beitrag auf StackOverflow für Details, wann static: true anstelle von static: false verwendet werden sollte.


Check out similar posts by category: Angular, Javascript, Typescript