catchError
EMPTY
throwError
"products$ | async"
products: Product[] = [];
constructor(private productService: ProductService) { }
ngOnInit() {
[Link]()
.subscribe(products => [Link] = products);
}
products$: Observable<Product[]>;
constructor(private productService: ProductService) { }
ngOnInit() {
[Link]$ = [Link]();
}
<div *ngIf="products">
<table>
<tr *ngFor="let product of products">
<td>{{ [Link] }}</td>
<td>{{ [Link] }}</td>
</tr>
</table>
<div *ngIf="products$ | async as products">
<table>
<tr *ngFor="let product of products">
<td>{{ [Link] }}</td>
<td>{{ [Link] }}</td>
</tr>
</table>
catchError
catchError([Link])
-
-
return [Link]<Product[]>([Link])
.pipe(
catchError(err => {
[Link](err);
return of([{ id: 1, productName: 'cart'},
{ id: 2, productName: 'hammer'}]);
});
ngOnInit() {
[Link]()
.subscribe(
products => [Link] = products,
err => [Link] = err
);
}
catchError
return [Link]<Product[]>([Link])
.pipe(
catchError(err => {
[Link](err);
return of(
[{ id: 1, productName: 'cart'},
{ id: 2, productName: 'hammer'}
]);
catchError(err =>...)
})
);
catchError
catchError
-
-
-
-
-
-
return [Link]<Product[]>([Link])
.pipe(
catchError(err => {
[Link](err);
return throwError(err);
});
throwError
throwError(err)
-
throwError
-
private productsUrl = 'api/products';
getProducts(): Observable<Product[]> {
return [Link]<Product[]>([Link])
.pipe(
catchError([Link])
);
}
private handleError(err) {
// ...
return throwError(errorMessage);
}
[Link]()
.subscribe(
products => [Link] = products,
err => [Link] = err
);
[Link]$ = [Link]()
[Link]();
.pipe(
catchError(err => {
[Link] = err;
return ???;
})
);
EMPTY
return EMPTY;
-
[Link]$ = [Link]()
.pipe(
catchError(err => {
[Link] = err;
return EMPTY;
})
);
checkAlways
@Component({
templateUrl: './[Link]',
changeDetection: [Link]
})
private productsUrl = 'api/products';
getProducts(): Observable<Product[]> {
return [Link]<Product[]>([Link])
.pipe(
catchError([Link])
);
}
ngOnInit() {
[Link]$ = [Link]()
.pipe(
catchError(err => {
[Link] = err;
return EMPTY;
})
);
}
private productsUrl = 'api/products';
products$ = [Link]<Product[]>([Link]);
products$ = [Link]$;
private productsUrl = 'api/products';
products$ = [Link]<Product[]>([Link])
.pipe(
catchError([Link])
);
products$ = [Link]$
.pipe(
catchError(err => {
[Link] = err;
return EMPTY;
})
);
-
export interface Product {
id: number;
productName: string;
productCode: string;
categoryId: number;
description: string;
}
-
-
private productsUrl = 'api/products';
products$ = [Link]<Product[]>([Link])
.pipe(
catchError([Link])
);
products$ = [Link]$
.pipe(
catchError(err => {
[Link] = err;
return EMPTY;
})
);
@Component({
templateUrl: './[Link]',
changeDetection: [Link]
})
<div *ngIf="products$ | async as products">
<table>
<tr *ngFor="let product of products">
<td>{{ [Link] }}</td>
<td>{{ [Link] }}</td>
</tr>
</table>
-
-
-
catchError(err => {
[Link] = err;
return EMPTY;
})
catchError(err => {
[Link](err);
return throwError(err);
})
catchError
throwError
products$ = [Link]<Product[]>([Link])
.pipe(
catchError(err => {
[Link](err);
return throwError(err);
});