问题描述
当我尝试将 GoogleMapsAPIWrapper 注入到我的一个组件中时,我必须将 Wrapper 提供给我的 NgModule 或我的 NgComponent。 这似乎不是预期的行为。
如果这是一个 Angular 4 服务,你应该能够只导入 AgmCoreModule 而不必在你的模块中使用 providers 数组。
重现步骤和问题的最小演示
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
constructor(googleMapsAPIWrapper: GoogleMapsAPIWrapper) { //
}
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
AgmCoreModule.forRoot()
],
providers: [ ], //wrong
bootstrap: [AppComponent]
})
export class AppModule { }
上面给出了一个错误。
您需要更改为providers: [ GoogleMapsAPIWrapper ],
bootstrap: [AppComponent]
预期/期望行为
你不应该为你的模块提供GoogleMapsAPIWrapper
。
angular2 和 angular-google-maps 版本
角度:4.1.3
agm/核心:1.0.0-beta.0
其他信息
GoogleMapsAPIWraper 在创建 agm-map 实例时创建。 这完全是故意的。 我们为每个地图维护一个实例。 如果要获取地图的实例,可以创建自定义组件并通过构造函数注入 GoogleMapsAPIWrapper。 所以我要关闭这个。
@SebastianM你有什么例子说明我想试试这个吗?
@SebastianM似乎不起作用.. 否则我错过了一些东西.. 你能帮忙吗,
承诺没有得到解决,第 25 行没有在下面的 repo 中的 app.component.ts 中执行。 (控制台没有错误)
https://stackblitz.com/edit/agm-google-maps-api-wrapper-not-working
最有用的评论
@SebastianM似乎不起作用.. 否则我错过了一些东西.. 你能帮忙吗,
承诺没有得到解决,第 25 行没有在下面的 repo 中的 app.component.ts 中执行。 (控制台没有错误)
https://stackblitz.com/edit/agm-google-maps-api-wrapper-not-working