복붙노트

[ANGULAR] "Type 'Object'는"새로운 HttpClient / httpGetModule을 사용하여 "유형에 할당 할 수 없습니다.

ANGULAR

"Type 'Object'는"새로운 HttpClient / httpGetModule을 사용하여 "유형에 할당 할 수 없습니다.

해결법


  1. 1.당신은 실제로 여기에 몇 가지 옵션을 가지고 있지만, 제네릭을 사용하여 기대하는 유형으로 캐스팅하십시오.

    당신은 실제로 여기에 몇 가지 옵션을 가지고 있지만, 제네릭을 사용하여 기대하는 유형으로 캐스팅하십시오.

       // Notice the Generic of IUsers[] casting the Type for resulting "data"
       this.http.get<IUsers[]>(this.productUrl).subscribe(data => ...
    
       // or in the subscribe
       .subscribe((data: IUsers[]) => ...
    

    또한 템플릿에서 ASYNC 파이프를 사용하는 것이 좋습니다. 특히 멋진 논리가 필요하지 않으면 자동 가입 / 수신 거부가 필요합니다.

    users: Observable<IUsers[]>; // different type now
    
    this.users = this.http.get<IUsers[]>(this.productUrl);
    
    // template:
    *ngFor="let user of users | async"
    

  2. 2.나는 앵귤러 닥터 팀에 있고 하나의 열린 todo 항목은이 문서를 변경하여 HTTP ...에 액세스 할 수있는 "모범 사례"를 보여주기 위해서는 서비스를 통한 것입니다.

    나는 앵귤러 닥터 팀에 있고 하나의 열린 todo 항목은이 문서를 변경하여 HTTP ...에 액세스 할 수있는 "모범 사례"를 보여주기 위해서는 서비스를 통한 것입니다.

    다음은 예제입니다.

    import { Injectable } from '@angular/core';
    import { HttpClient, HttpErrorResponse } from '@angular/common/http';
    import { Observable } from 'rxjs/Observable';
    import 'rxjs/add/observable/throw';
    import 'rxjs/add/operator/catch';
    import 'rxjs/add/operator/do';
    import 'rxjs/add/operator/map';
    
    import { IProduct } from './product';
    
    @Injectable()
    export class ProductService {
        private _productUrl = './api/products/products.json';
    
        constructor(private _http: HttpClient) { }
    
        getProducts(): Observable<IProduct[]> {
            return this._http.get<IProduct[]>(this._productUrl)
                .do(data => console.log('All: ' + JSON.stringify(data)))
                .catch(this.handleError);
        }
    
        private handleError(err: HttpErrorResponse) {
            // in a real world app, we may send the server to some remote logging infrastructure
            // instead of just logging it to the console
            let errorMessage = '';
            if (err.error instanceof Error) {
                // A client-side or network error occurred. Handle it accordingly.
                errorMessage = `An error occurred: ${err.error.message}`;
            } else {
                // The backend returned an unsuccessful response code.
                // The response body may contain clues as to what went wrong,
                errorMessage = `Server returned code: ${err.status}, error message is: ${err.message}`;
            }
            console.error(errorMessage);
            return Observable.throw(errorMessage);
        }
    }
    

    구성 요소는 다음과 같습니다.

    ngOnInit(): void {
        this._productService.getProducts()
                .subscribe(products => this.products = products,
                           error => this.errorMessage = <any>error);
    }
    
  3. from https://stackoverflow.com/questions/45426907/type-object-is-not-assignable-to-type-with-new-httpclient-httpgetmodule by cc-by-sa and MIT license