angular - Funktionsimplementeringen saknas eller följer inte omedelbart efter deklarationen, TypeScript-klass


Jag fick en handskriven array för att fylla ett bord i min klass, nu hämtar jag innehållet i denna array från en JSON på ngOnInit men det är inte strukturerat som jag behöver.

Så jag försöker skriva en funktion för att fylla table-arrayen med den nya jag får på ngOnInit.

Problemet är att när jag skriver kod utanför en funktion i min TS-klass får jag detta felmeddelande: "Funktionsimplementering saknas eller följer inte omedelbart efter deklarationen".

Varför är det så och vad kan göras för att åtgärda detta?

TS

export class MyComponent implements OnInit {
    users: Object;

    constructor(private tstService: MyComponentService) { this.source = new LocalDataSource(this.data) }

    ngOnInit(): void {
        this.tstService.getTstWithObservable()
        .map(result => result.map(i => i.user.data))
        .subscribe(
           res => { this.users = res; }
       );
    }

    console.log(this.users); // Here, just an example. Throws 'Function implementation is missing or not immediately following the declaration'

    data = [
        {
          title: 'Monthly',
          sdate: '01/04/1990',
          edate: '30/09/1990',
        },
      ];

    source: LocalDataSource;
}

Svar #1

Problemet här är att du har viss "kodexekvering" (console.log(this.users);) utanför ett "exekverbart område" (till exempel "området" inne i ngOnInit).

Om du behöver göra console.log(this.users); för att se datan i devtools, bör du flytta console.log-delen inuti ngOnInit som är en körbar del av din klass MyComponent eller kanske inuti constructor.

Jag skulle rekommendera dig att göra det så här:

ngOnInit(): void {
    this.tstService.getTstWithObservable()
    .map(result => result.map(i => i.user.data))
    .subscribe(
       res => {
                this.users = res;
                console.log(this.users); // <-- moved here!
       }
   );
}

Saken är den att koden du försöker köra behöver vara inuti en metod som Angular kör.

Se den här demonstrationen med några exempel. Den relevanta koden finns nedan:

export class AppComponent  implements OnInit{
  name = 'Angular 6';

  constructor() {
    console.log(name); // OK
  }

  ngOnInit() {
    console.log('sample not giving error'); // OK
  }

 // comment line below and the error will go away
  console.log(name); // this will throw: Function implementation is missing or not immediately following the declaration
}

Relaterade artiklar