Ionic framework 错误:未捕获(承诺中):NullInjectorError:R3InjectorError(RegisterManagementModule)[AccessProviders->;AccessProviders]
我在Ionic framework 错误:未捕获(承诺中):NullInjectorError:R3InjectorError(RegisterManagementModule)[AccessProviders->;AccessProviders],ionic-framework,ionic5,Ionic Framework,Ionic5,我在register.page.ts中使用AngularJS的Ionic应用程序中遇到问题;当我要在项目中添加AccessProviders路径时,项目会显示:错误:Uncaught(承诺中):NullInjectorError:R3InjectorError(registermanagemodule)[AccessProviders->AccessProviders->AccessProviders->AccessProviders->AccessProviders]:NullInjector
register.page.ts
中使用AngularJS的Ionic应用程序中遇到问题;当我要在项目中添加AccessProviders
路径时,项目会显示:错误:Uncaught(承诺中):NullInjectorError:R3InjectorError(registermanagemodule)[AccessProviders->AccessProviders->AccessProviders->AccessProviders->AccessProviders]:NullInjectorError:AccessProviders没有提供程序代码>
我已手动创建access providers文件夹和文件。
注册.page.ts
import {Router} from "@angular/router";
import { ToastController, LoadingController, AlertController } from "@ionic/angular";
import {AccessProviders} from "../../providers/access-providers";
@Component({
selector: 'app-register',
templateUrl: './register.page.html',
styleUrls: ['./register.page.scss'],
})
export class RegisterPage implements OnInit {
name: string = "";
gender: string = "";
dob: string = "";
email: string = "";
password: string = "";
confirm_password: string = "";
disabledButton;
constructor(
private router: Router,
private toastCtrl: ToastController,
private alertCtrl: AlertController,
private loadingCtrl: LoadingController,
private accsPrvds: AccessProviders,
) { }
ionViewDidEnter() {
this.disabledButton = false;
}
import { HttpClient, HttpHeaders, HttpErrorResponse } from "@angular/common/http";
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/timeout';
@Injectable()
export class AccessProviders {
server: string = 'http://localhost:8100/register'; //should change.
constructor(
public http: HttpClient
) {
}
postData(body, file) {
let headers = new HttpHeaders({
'Content-Type': 'application/json; charset=UTF-8'
});
let options = {
headers: headers
};
return this.http.post(this.server + file, JSON.stringify(body), options)
.timeout(59000)// 59 sec timeout
.map(res => res);
}
}
访问提供商。ts
import {Router} from "@angular/router";
import { ToastController, LoadingController, AlertController } from "@ionic/angular";
import {AccessProviders} from "../../providers/access-providers";
@Component({
selector: 'app-register',
templateUrl: './register.page.html',
styleUrls: ['./register.page.scss'],
})
export class RegisterPage implements OnInit {
name: string = "";
gender: string = "";
dob: string = "";
email: string = "";
password: string = "";
confirm_password: string = "";
disabledButton;
constructor(
private router: Router,
private toastCtrl: ToastController,
private alertCtrl: AlertController,
private loadingCtrl: LoadingController,
private accsPrvds: AccessProviders,
) { }
ionViewDidEnter() {
this.disabledButton = false;
}
import { HttpClient, HttpHeaders, HttpErrorResponse } from "@angular/common/http";
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/timeout';
@Injectable()
export class AccessProviders {
server: string = 'http://localhost:8100/register'; //should change.
constructor(
public http: HttpClient
) {
}
postData(body, file) {
let headers = new HttpHeaders({
'Content-Type': 'application/json; charset=UTF-8'
});
let options = {
headers: headers
};
return this.http.post(this.server + file, JSON.stringify(body), options)
.timeout(59000)// 59 sec timeout
.map(res => res);
}
}
我如何解决这个问题?我希望得到我的答案。在您的访问提供程序.ts
文件中添加blow代码:
import { Injectable } from '@angular/core'; // at top
@Injectable({
providedIn: 'root' // just before your class
})
export class AccessProviders {}
看起来您需要将其添加到app.modules.ts文件的providers下
如果您只需要在一个页面中使用该类,则可以将其添加到相应页面的page.module.ts文件中。确保HttpClientModule
在AppModule级别注册。我遇到了类似的问题,我在这里找到了解决方案:
我必须进口
“从“@angular/common/http”;”导入{HttpClientModule}”
导入:[HttpClientModule],在引用组件的模块内。在应用程序模块中
您必须在顶部添加:
import {AccessProviders} from "../../providers/access-providers";
在同一个文件上,找到提供者,只需将AccessProviders添加到提供者列表中