ioni c v4 и плагин для обмена в социальных сетях - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть работающий пользовательский компонент, в который я только что добавил кнопку «Поделиться». Я бы хотел, чтобы это работало, поэтому я установил этот плагин для обмена социальными сетями и выполнил, казалось бы, простые инструкции, например

$ 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 зависит от внедрения службы совместного использования в компоненте. Я подозреваю, что виновником является способ, которым я импортирую и / или способ, которым я объявляю компонент в модуле страницы, но даже тогда я не знаю почему и не знаю, как это исправить. Можете ли вы помочь, пожалуйста?

...