在服务中使用本机存储

Use Native Storage in service

我安装了 Native Storage。所以我必须在 home.ts (组件)上使用它。这是我的代码

  setStyle (val: string) {
    this.nativeStorage.setItem('style', {color: val})
    .then(
      () => console.log('Stored item!'),
      error => console.error('Error storing item', error)
    );
  }

  getStyle (property: string) {
    this.nativeStorage.getItem('style')
    .then(
      data => console.log(data[property]),
      error => console.error(error)
    );
  }

  ngOnInit() {
    this.setStyle('fff');
    this.getStyle('color');
  }

当我 运行 我的应用程序使用 ionic cordova run browser 我的代码运行良好。我在控制台中看到了这个

Stored item!
fff

但是我的问题是 当我在 style.ts(服务)

使用本机存储时
import { NativeStorage } from '@ionic-native/native-storage';

export class Style {

  constructor(private nativeStorage: NativeStorage) {}

  set (val: string) {
    this.nativeStorage.setItem('style', {color: val})
    .then(
      () => console.log('Stored item!'),
      error => console.error('Error storing item', error)
    );
  }

  get (property: string) {
    this.nativeStorage.getItem('style')
    .then(
      data => console.log(data[property]),
      error => console.error(error)
    );
  }

}

并在 home.ts(组件)

中使用我的服务
import { Component, OnInit } from '@angular/core';
import { Style } from '../../style/style';

export class HomePage implements OnInit{

  constructor(private style: Style) {}

  ngOnInit() {
    this.style.set('fff');
    this.style.get('color');
  }

}

我在控制台上收到此错误

Uncaught Error: Can't resolve all parameters for Style: (?).
    at syntaxError (compiler.js:466)
    at CompileMetadataResolver._getDependenciesMetadata (compiler.js:15547)
    at CompileMetadataResolver._getTypeMetadata (compiler.js:15382)
    at CompileMetadataResolver._getInjectableMetadata (compiler.js:15362)
    at CompileMetadataResolver.getProviderMetadata (compiler.js:15722)
    at compiler.js:15633
    at Array.forEach (<anonymous>)
    at CompileMetadataResolver._getProvidersMetadata (compiler.js:15593)
    at CompileMetadataResolver.getNgModuleMetadata (compiler.js:15161)
    at JitCompiler._loadModules (compiler.js:33542)

然而,当我不使用构造函数时,我的代码可以正常工作

import { NativeStorage } from '@ionic-native/native-storage';

export class Style {

  set (val: string) {
    new NativeStorage().setItem('style', {color: val})
    .then(
      () => console.log('Stored item!'),
      error => console.error('Error storing item', error)
    );
  }

  get (property: string) {
    new NativeStorage().getItem('style')
    .then(
      data => console.log(data[property]),
      error => console.error(error)
    );
  }

}

我的问题是如何通过构造函数在服务中使用本机存储 并避免此错误 Can't resolve all parameters for Style: (?)

您必须将标志 @Injectable() 放在您的服务 class 声明之上。

文档:Angular docs