Type 'void' is not assignable to type 'any[]'

18,940

Since getRisks() doesn't return anything, simply call it and it will set this.data

constructor(private _riskService: RiskService) {
    this.getRisks();
    this.loadRisks();
 }

You can set this.data = [] if you need it to be defined before data is available.

Share:
18,940
Tom
Author by

Tom

Updated on August 02, 2022

Comments

  • Tom
    Tom almost 2 years

    I am getting error at following line of the constructor code

    this.data = this.getRisks(); . 
    

    The error is

    Type 'void' is not assignable to type 'any[]'.

    Could somebody tell me how do i assign it .

    import { Component, OnInit } from '@angular/core';
    import { Risk } from './risk';
    import { RiskService } from './risk.service';
    import { GridModule, GridDataResult, PageChangeEvent } from '@progress/kendo-angular-grid';
    
    @Component({
        moduleId: module.id,
        selector: 'rm-risks',
        templateUrl: '/app/risk-list.component.html',
        providers: [RiskService]
    })
    
    export class RiskListComponent implements OnInit {
        private gridView: GridDataResult;
        private data: any[];
        private pageSize: number = 50;
        private skip: number = 0;
        title = 'Risk List';
        risks: Risk[];
    
        constructor(private _riskService: RiskService) {
            this.data = this.getRisks();
            this.loadRisks();
         }
    
        protected pageChange(event: PageChangeEvent): void {
            this.skip = event.skip;
            this.loadRisks();
        }
    
        private loadRisks(): void {
            this.gridView = {
                data: this.data.slice(this.skip, this.skip + this.pageSize),
                total: this.data.length
            };
        }
    
        getRisks(): void {
            this._riskService.getRisks().then(risks => this.risks = risks);
    
        }
    
        ngOnInit(): void {
            this.getRisks();
        }
    };
    

    risk.service.ts

    import { Injectable } from '@angular/core';
    import { Risk } from './risk';
    import { Risks } from './mock-risk';
    import { Http, Response } from '@angular/http';
    import { Observable } from 'rxjs/Observable';
    import 'rxjs/add/observable/from';
    
    
    @Injectable()
    export class RiskService {
    
        getRisks(): Promise<Risk[]> {
            return Promise.resolve(Risks);
        }
    
    }