Angular Can';t解析LocationTracker的所有参数
我试着遵循Josh Morony的示例代码, 但我似乎找不到解决办法 我从控制台得到一个错误,它显示在webrowser上,甚至在设备上 我已经添加了插件:Angular Can';t解析LocationTracker的所有参数,angular,cordova,ionic2,location,ionic3,Angular,Cordova,Ionic2,Location,Ionic3,我试着遵循Josh Morony的示例代码, 但我似乎找不到解决办法 我从控制台得到一个错误,它显示在webrowser上,甚至在设备上 我已经添加了插件: $ ionic cordova plugin add cordova-plugin-geolocation $ npm install --save @ionic-native/geolocation $ ionic cordova plugin add cordova-plugin-mauron85-background-geolocat
$ ionic cordova plugin add cordova-plugin-geolocation
$ npm install --save @ionic-native/geolocation
$ ionic cordova plugin add cordova-plugin-mauron85-background-geolocation
$ npm install --save @ionic-native/background-geolocation
这是错误消息
Uncaught Error: Can't resolve all parameters for LocationTracker: ([object Object], [object Object], [object Object], ?).at syntaxError (file:///android_asset/www/build/vendor.js:79310:34)
at CompileMetadataResolver._getDependenciesMetadata (file:///android_asset/www/build/vendor.js:92647:35)
at CompileMetadataResolver._getTypeMetadata (file:///android_asset/www/build/vendor.js:92515:26)
at CompileMetadataResolver._getInjectableMetadata (file:///android_asset/www/build/vendor.js:92501:21)
at CompileMetadataResolver.getProviderMetadata (file:///android_asset/www/build/vendor.js:92791:40)
at file:///android_asset/www/build/vendor.js:92720:49
at Array.forEach (native)
at CompileMetadataResolver._getProvidersMetadata (file:///android_asset/www/build/vendor.js:92681:19)
at CompileMetadataResolver.getNgModuleMetadata (file:///android_asset/www/build/vendor.js:92336:50)
at JitCompiler._loadModules (file:///android_asset/www/build/vendor.js:103400:66)
pages/home/home.ts
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { LocationTracker } from '../../providers/location-tracker/location-tracker';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController, public locationTracker: LocationTracker) {
this.startTracking();
}
startTracking(){
this.locationTracker.startTracking();
}
stopTracking(){
this.locationTracker.stopTracking();
}
}
/pages/home/home.html
<ion-content padding>
<ion-label>Current Latitude: {{locationTracker.lat}</ion-label>
<ion-label>Current Longitude: {{locationTracker.lng}}</ion-label>
</ion-content>
app/app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { StatusBar } from '@ionic-native/status-bar';
import { LocationTracker } from '../providers/location-tracker/location-tracker';
import { BackgroundGeolocation } from '@ionic-native/background-geolocation';
import { Geolocation } from '@ionic-native/geolocation';
@NgModule({
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
HttpModule
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage
],
providers: [
StatusBar
{provide: ErrorHandler, useClass: IonicErrorHandler}
LocationTracker,
BackgroundGeolocation,
Geolocation
]
})
export class AppModule {}
如果你看一下错误,它说第四个参数不能被注入
Uncaught Error: Can't resolve all parameters for LocationTracker: ([object Object], [object Object], [object Object], ?)
从可注入的
constructor(public zone: NgZone,
public backgroundGeolocation: BackgroundGeolocation,
public geolocation: Geolocation,
public geoposition: Geoposition) {
}
第四个是这个地理位置,这似乎是你没有“提供”在NGM模块
因此,只要不使用此“地理位置”实例/对象,就可以将其从构造函数中删除:
constructor(public zone: NgZone,
public backgroundGeolocation: BackgroundGeolocation,
public geolocation: Geolocation) {
}
它可以是离子2或离子3,但不能同时是:)在tagsHi onetwo12中,你指的是标记吗?我明白你的意思。我想这两个错误都可能。很好。。您的解释帮助我更好地理解了如何阅读错误…非常感谢!我现在看到了。明天我测试完后,我会给出答案。你解释得很好,很准确。你是对的。你发现了错误。但是,修复方法是从构造函数中删除地理位置,因为它不是必需的,并且不需要在NgModule中“提供”。请把它加在你的答案上,我会接受它为正确答案。非常感谢。你好@ChristianBenseler!它之所以有效,是因为页面中没有使用“地理位置”。但是,如果要使用它并且需要在构造函数中出现?
constructor(public zone: NgZone,
public backgroundGeolocation: BackgroundGeolocation,
public geolocation: Geolocation) {
}