“类型'void'不能分配给类型'Todo []'。”如何解决呢?

时间:2019-12-20 10:46:41

标签: angular8

在我的angular 8应用程序中,我有此服务:

export class TodoService {
  private url:string ="http://192.168.99.100:2403/todos";
  sTodos:Subject<Todo[]>= new Subject<Todo[]>();
  sTodos$=this.sTodos.asObservable();

  constructor(private http:Http) { }

getTodos(){
    return this.http.get(this.url).map((r)=>{
    let data = r.json();      
    this.sTodos.next(data);  

  });
}

在我的组件中,我调用getTodos函数:

export class TodoListComponent implements OnInit {
  todos:Todo[]=[];

  constructor(private todoService:TodoService) { }

  ngOnInit(){    
  this.todoService.getTodos().subscribe((todos) =>{
    this.todos = todos;

  });
}

}

我收到此错误

  

类型'void'不能分配给类型'Todo []'。

1 个答案:

答案 0 :(得分:-2)

您可以为http调用添加显式类型。

编辑:

如果您使用的是Angular 8,则还应该使用新的Http Client

constructor(private http:HttpClient) { }

getTodos(){
    return this.http.get<Todo[]>(this.url)
        .pipe(
            tap((data)=>{
                this.sTodos.next(data);  
            });  
        )
}