У меня есть работающий пользовательский компонент, в который я только что добавил кнопку «Поделиться». Я бы хотел, чтобы это работало, поэтому я установил этот плагин для обмена социальными сетями и выполнил, казалось бы, простые инструкции, например
$ ionic cordova plugin add cordova-plugin-x-socialsharing
$ npm install --save @ionic-native/social-sharing@4
Однако, как только я внедрить требуемый сервис в конструктор, приложение перестает работать, и я получаю сообщение об ошибке в консоли браузера (см. ниже). Вот фрагмент из файла .ts
моего пользовательского компонента с импортом и добавлением свойства, которое я добавил в конструктор. Обратите внимание, что я вырезал несколько частей реального кода, которые бесполезны, пока эта проблема касается:
import { Component, AfterViewInit, ElementRef, ViewChild} from '@angular/core';
import { PdfParametersService } from '../../services/pdf-parameters.service';
import { UserProfileService } from '../../services/user-profile.service';
import { SocialSharing } from '@ionic-native/social-sharing';
@Component({
selector: 'sollecita',
templateUrl: './sollecita.component.html',
styleUrls: ['./sollecita.component.scss'],
})
export class SollecitaComponent implements AfterViewInit {
constructor(
private socialSharing: SocialSharing, /* THIS LINE TRIGGERS THE PROBLEM */
private service: PdfParametersService,
private profileService: UserProfileService
) {
}
ngAfterViewInit(): void {
}
И вот ошибка, которую я получаю в консоли браузера, только при наличии социальной служба обмена вводится в конструктор. Если я закомментирую эту строку, приложение снова начнет работать, но ему явно не хватает возможностей для совместного использования:
Uncaught (in promise): ReferenceError: Cannot access 'SollecitaPageModule' before initialization
ReferenceError: Cannot access 'SollecitaPageModule' before initialization
at Module.SollecitaPageModule (VM609 pages-sollecita-sollecita-module.js:890)
at VM44 main.js:2141
at ZoneDelegate.invoke (VM37 polyfills.js:3604)
at Object.onInvoke (VM45 vendor.js:79927)
at ZoneDelegate.invoke (VM37 polyfills.js:3603)
at Zone.run (VM37 polyfills.js:3363)
at VM37 polyfills.js:4090
at ZoneDelegate.invokeTask (VM37 polyfills.js:3639)
at Object.onInvokeTask (VM45 vendor.js:79908)
at ZoneDelegate.invokeTask (VM37 polyfills.js:3638)
at Zone.runTask (VM37 polyfills.js:3407)
at drainMicroTaskQueue (VM37 polyfills.js:3809)
at ZoneTask.invokeTask [as invoke] (VM37 polyfills.js:3724)
at invokeTask (VM37 polyfills.js:4835)
at HTMLElement.globalZoneAwareCallback (VM37 polyfills.js:4861)
at resolvePromise (VM37 polyfills.js:4032) [angular]
at resolvePromise (VM37 polyfills.js:3991) [angular]
at :8100/polyfills.js:4093:21 [angular]
at Object.onInvokeTask (VM45 vendor.js:79908) [angular]
at drainMicroTaskQueue (VM37 polyfills.js:3809) [<root>]
at ZoneTask.invokeTask [as invoke] (VM37 polyfills.js:3724) [<root>]
at invokeTask (VM37 polyfills.js:4835) [<root>]
at HTMLElement.globalZoneAwareCallback (VM37 polyfills.js:4861) [<root>]
defaultErrorLogger @ core.js:6014
handleError @ core.js:6066
next @ core.js:40558
schedulerFn @ core.js:35336
__tryOrUnsub @ Subscriber.js:183
next @ Subscriber.js:122
_next @ Subscriber.js:72
next @ Subscriber.js:49
next @ Subject.js:39
emit @ core.js:35298
(anonymous) @ core.js:39738
invoke @ zone-evergreen.js:365
run @ zone-evergreen.js:124
runOutsideAngular @ core.js:39572
onHandleError @ core.js:39735
handleError @ zone-evergreen.js:369
runGuarded @ zone-evergreen.js:137
api.microtaskDrainDone @ zone-evergreen.js:671
drainMicroTaskQueue @ zone-evergreen.js:577
invokeTask @ zone-evergreen.js:485
invokeTask @ zone-evergreen.js:1596
globalZoneAwareCallback @ zone-evergreen.js:1622
А вот мой код SollecitaPageModule.ts
:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular';
import { SollecitaPageRoutingModule } from './sollecita-routing.module';
import { SollecitaPage } from './sollecita.page';
import { SollecitaComponent } from '../../../components/sollecita/sollecita.component';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
SollecitaPageRoutingModule
],
declarations: [SollecitaPage, SollecitaComponent]
})
export class SollecitaPageModule {}
Я не знаю Не понятно, почему SollecitaPageModule зависит от внедрения службы совместного использования в компоненте. Я подозреваю, что виновником является способ, которым я импортирую и / или способ, которым я объявляю компонент в модуле страницы, но даже тогда я не знаю почему и не знаю, как это исправить. Можете ли вы помочь, пожалуйста?