在服务中使用本机存储
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
我安装了 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