Я хотел понять некоторые основы Angular и HttpClient
. Мой код работает, но я не понимаю, как. Я проверил эти две ссылки:
Я смотрел это видео на YouTube:
Я узнал, что синтаксис метода GET HttpClient
:
get(url: string, options: {...}): Observable<any>
Так что я сделал, как мне сказали сделать в видео. Вот мой случай 1:
Пользовательская служба
...
export class UserService {
constructor(private _http: HttpClient) { }
getAllUsers() {
return this._http.get("https://jsonplaceholder.typicode.com/users"):Observable<any>;
}
}
Почему VSCode жалуется:
Значение типа 'typeof Observable' не может быть вызвано. Вы хотели добавить "новый"?
На самом деле мой код работает отлично, если я вообще не указываю Observable
. Вот случай 2:
...
export class UserService {
constructor(private _http: HttpClient) { }
getAllUsers() {
return this._http.get("https://jsonplaceholder.typicode.com/users");
}
}
И вот мой компонент (для обоих случаев):
Список пользователей
users=[];
constructor(private userService: UserService) { }
ngOnInit() {
this.fetchAllUsers();
}
fetchAllUsers() {
this.userService.getAllEUsers().subscribe(
res => {
this.users.push(res)
}
);
}
Укажите на мои ошибки в обоих случаях. Я думаю, что где-то нарушаю правила Angular.
PS: Скриншот урока YouTube:
@ 31piy, это руководство не содержит кода. Но я добавил скриншот.
Следующая строка является недопустимым оператором в вашем коде:
return this._http.get("https://jsonplaceholder.typicode.com/users"):Observable<any>;
Я думаю, что вы пытаетесь указать здесь возвращаемое значение для метода, и в этом случае вам нужно изменить объявление метода следующим образом:
getAllUsers(): Observable<any> {
return this._http.get("https://jsonplaceholder.typicode.com/users");
}
Возможно, вы захотите пройти курс повышения квалификации по TypeScript здесь.
Я также добавил скриншот в вопрос. Только сейчас добавил. Мне сказали следовать тому же.
И как это работает, когда я вообще нигде не указываю Observable?
Вам нужно будет понять разницу между объявлением и реализацией. Скриншот описывает объявление метода. Кроме того, тип возврата http.get по умолчанию — Observable<any>
, поэтому нет никакой разницы, если вы не добавите тип возврата в свой метод.
@Tanzeel - я добавил ссылку на документ TS в свой ответ. Возможно, вы захотите узнать больше о TS, прежде чем переходить к Angular.
Это действительно было очень полезно.
return this._http.get("..."):Observable<any>;
-- это недопустимый синтаксис. Можете ли вы проверить еще раз, что такое фактический код?