angular 4 loading.dismiss() 不工作
angular 4 loading.dismiss() not working
我正在尝试在 handleError() 方法中执行 loading.dismiss() ,但不确定该怎么做?
它运行良好,响应良好,不确定如何处理错误情况
请帮忙
@Injectable()
导出 class SharedProvider {
private _postsURL = "https://jsonplaceholder.typicode.com/posts";
constructor(private http: Http, public loadingCtrl: LoadingController) {
}
getPosts(): Observable<IPosts[]> {
let loading = this.loadingCtrl.create({
content: 'loading...'
});
loading.present();
return this.http
.get(this._postsURL)
.map((response: Response) => {
loading.dismiss();
console.log("Result printed!!");
return <IPosts[]>response.json();
})
.catch(this.handleError);
}
handleError(error: Response) {
this.loading.dismiss();
console.log("Err printed!!" + error.statusText);
return Observable.throw(error.statusText);
}
}
loading
对象在您的 handleError
方法中不存在,因为它的范围是 getPosts()
,所以您无法访问它,如果 loading
是全局设置的,或者是 class 的 属性。我认为有几个解决方案可以解决这个问题:
首先是取消加载,然后调用 handleError
:
// your getPosts method ...
.catch(err =>{
loading.dismiss();
this.handleError(err);
});
第二个(如前所述)是创建一个 属性 loading
并使用它来代替作用域加载对象。
private _postsURL = "https://jsonplaceholder.typicode.com/posts";
public loading;
constructor(private http: Http, public loadingCtrl: LoadingController) {
}
getPosts(): Observable<IPosts[]> {
this.loading = this.loadingCtrl.create({ content: 'loading...' });
this.loading.present().then(() =>{
return this.http
.get(this._postsURL)
.map((response: Response) => {
this.loading.dismiss();
console.log("Result printed!!");
return <IPosts[]>response.json();
})
.catch(this.handleError);
});
}
也尝试将方法内容包装在加载 present()
方法返回的承诺中,在加载之前触发方法 dismiss()
有很多并发错误(或任何其他可呈现的组件)甚至显示给用户。
无论如何,其中一种解决方案可能对您有用,希望对您有所帮助。
我只是打算为 Ionic 4 用户放弃这个
const loading = await this.loadingController.create({ message: 'Processing card' })
loading.present().then( () => {
getPostFunction({
data: {email:"test@test.com"}
}).then((response) => {
loading.dismiss();
console.log(response);
}, (error) => {
loading.dismiss();
console.log(error)
});
})
我正在尝试在 handleError() 方法中执行 loading.dismiss() ,但不确定该怎么做? 它运行良好,响应良好,不确定如何处理错误情况
请帮忙
@Injectable()
导出 class SharedProvider {
private _postsURL = "https://jsonplaceholder.typicode.com/posts";
constructor(private http: Http, public loadingCtrl: LoadingController) {
}
getPosts(): Observable<IPosts[]> {
let loading = this.loadingCtrl.create({
content: 'loading...'
});
loading.present();
return this.http
.get(this._postsURL)
.map((response: Response) => {
loading.dismiss();
console.log("Result printed!!");
return <IPosts[]>response.json();
})
.catch(this.handleError);
}
handleError(error: Response) {
this.loading.dismiss();
console.log("Err printed!!" + error.statusText);
return Observable.throw(error.statusText);
}
}
loading
对象在您的 handleError
方法中不存在,因为它的范围是 getPosts()
,所以您无法访问它,如果 loading
是全局设置的,或者是 class 的 属性。我认为有几个解决方案可以解决这个问题:
首先是取消加载,然后调用 handleError
:
// your getPosts method ...
.catch(err =>{
loading.dismiss();
this.handleError(err);
});
第二个(如前所述)是创建一个 属性 loading
并使用它来代替作用域加载对象。
private _postsURL = "https://jsonplaceholder.typicode.com/posts";
public loading;
constructor(private http: Http, public loadingCtrl: LoadingController) {
}
getPosts(): Observable<IPosts[]> {
this.loading = this.loadingCtrl.create({ content: 'loading...' });
this.loading.present().then(() =>{
return this.http
.get(this._postsURL)
.map((response: Response) => {
this.loading.dismiss();
console.log("Result printed!!");
return <IPosts[]>response.json();
})
.catch(this.handleError);
});
}
也尝试将方法内容包装在加载 present()
方法返回的承诺中,在加载之前触发方法 dismiss()
有很多并发错误(或任何其他可呈现的组件)甚至显示给用户。
无论如何,其中一种解决方案可能对您有用,希望对您有所帮助。
我只是打算为 Ionic 4 用户放弃这个
const loading = await this.loadingController.create({ message: 'Processing card' })
loading.present().then( () => {
getPostFunction({
data: {email:"test@test.com"}
}).then((response) => {
loading.dismiss();
console.log(response);
}, (error) => {
loading.dismiss();
console.log(error)
});
})