问题描述
我正在使用Ionic 5和电容器做一个应用程序。
package.json
def similar(a,b): # adapted from here: https://stackoverflow.com/a/63838615/8402369
try:
similarity = 1-textdistance.Cosine(qval=2).distance(a,b)
return similarity * 100
except ZeroDivisionError:
print('There was an error. Here are the values of a and b that were passed')
print(f'a: {repr(a)}')
print(f'b: {repr(b)}')
exit()
我已安装插件Email Composer,以打开用户的电子邮件客户端以发送电子邮件。
使用电容器安装
"dependencies": {
"@angular/common": "~9.1.6","@angular/core": "~9.1.6","@angular/fire": "^6.0.2","@angular/forms": "~9.1.6","@angular/platform-browser": "~9.1.6","@angular/platform-browser-dynamic": "~9.1.6","@angular/router": "~9.1.6","@capacitor/android": "^2.4.0","@capacitor/core": "^2.4.0","@capacitor/ios": "^2.4.0","@ionic-native/core": "^5.27.0","@ionic-native/email-composer": "^5.28.0","@ionic/angular": "^5.2.3","cordova-plugin-email-composer": "^0.9.2","rxjs": "~6.5.1","tslib": "^1.10.0","zone.js": "~0.10.2"
}
npm install cordova-plugin-email-composer
npm install @ionic-native/email-composer
ionic cap sync
控制台错误:
ERROR错误:未捕获(按承诺):NullInjectorError: R3InjectorError(ContentModule)[EmailService-> EmailComposer-> EmailComposer-> EmailComposer-> EmailComposer]:
NullInjectorError:没有EmailComposer提供程序! NullInjectorError: R3InjectorError(ContentModule)[EmailService-> EmailComposer-> EmailComposer-> EmailComposer-> EmailComposer]:
NullInjectorError:没有EmailComposer提供程序!
看到此信息后,我将其添加到了ngModule:
import {Injectable} from '@angular/core';
import {EmailComposer,EmailComposerOptions} from "@ionic-native/email-composer/ngx";
@Injectable()
export class EmailService {
constructor(
private emailComposer: EmailComposer
) {
}
private get isEmailClientConfigured(): Promise<boolean> {
return this.emailComposer.isAvailable();
}
/**
* Tries to open an email client and populate the fields.
*/
intentToSend(to: string) {
if (this.isEmailClientConfigured) {
const email: EmailComposerOptions = {
to: to,isHtml: false
};
this.emailComposer.open(email);
} else {
console.log('Could not find an email configured.');
}
}
}
现在我在控制台中收到此错误:
core.js:6228错误错误:未捕获(承诺):错误:无效 NgModule'SharedModule'的提供程序-仅提供程序的实例 和Type被允许,得到:[...,...,...,...,...,?[对象 对象]?]错误:NgModule'SharedModule'的提供者无效- 仅允许Provider和Type的实例,得到:[...,...,..., ...,...,?[object Object]?]
任何想法我该如何解决?
我的目标是在我的项目中正确安装和实现插件EmailComposer。
解决方法
要添加到上面的Praveen Patel的答案中,请尝试从更改导入代码
import {EmailComposer} from "@ionic-native/email-composer";
对此:(请注意'/ ngx')
import {EmailComposer} from "@ionic-native/email-composer/ngx";
,
在AppModule的提供程序中添加EmailComposer
import {EmailComposer} from "@ionic-native/email-composer";
@NgModule({
declarations: [AppComponent ],imports: [
BrowserModule,IonicModule.forRoot(),AppRoutingModule,],providers: [
...
EmailComposer
],bootstrap: [AppComponent]
})
export class AppModule {}
,
添加带有提供的 useClass
import {EmailComposer} from "@ionic-native/email-composer";
import { IonicNativePlugin } from '@ionic-native/core';
...
...
...
providers: [
...
{ provide: EmailComposer,useClass: IonicNativePlugin}
]