Локальное хранилище Angular 2 - нет ошибок компиляции
Заранее благодарю за любую помощь. Я пытаюсь получить доступ к локальному хранилищу в Angular 2 с машинописью. Я использую пакет npm angular2-localstorage. У меня работала angular.io "Tour of Heroes" (без особой стилизации). Я следовал инструкциям на https://www.npmjs.com/package/angular2-localstorage. После добавления предложенного кода в файл app.module.ts я попытался запустить npm start
и получите следующие ошибки компиляции:
node_modules/angular2-localstorage/LocalStorageEmitter.ts(46,9): error TS2305: Module '"/Users/joshuaforman/Documents/CodeCraft/a2quickstart/a2-angular/node_modules/@angular/core/src/facade/lang"' has no exported member 'Type'.
node_modules/angular2-localstorage/LocalStorageEmitter.ts(47,9): error TS2305: Module '"/Users/joshuaforman/Documents/CodeCraft/a2quickstart/a2-angular/node_modules/@angular/core/src/di"' has no exported member 'provide'.
Вы можете увидеть весь код здесь: https://github.com/joshuaforman/angular2-quickstart
Кроме того, вот полный файл app.module.ts (единственный, который я изменил, который вызывает ошибки):
import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { FormsModule } from "@angular/forms";
import { HttpModule } from "@angular/http";
// added for LocalStorage
// followed instructions here: https://www.npmjs.com/package/angular2-localstorage
import { LocalStorageService, LocalStorageSubscriber } from "angular2-localstorage/LocalStorageEmitter";
// Imports for loading & configuring the in-memory web api
import { InMemoryWebApiModule } from "angular2-in-memory-web-api";
import { InMemoryDataService } from "./in-memory-data.service";
import { AppComponent } from "./app.component";
import { HeroDetailComponent } from "./hero-detail.component";
import { HeroesComponent } from "./heroes.component";
import { HeroService } from "./hero.service";
import { DashboardComponent } from "./dashboard.component";
import { routing } from "./app.routing";
@NgModule({
imports: [
BrowserModule,
HttpModule,
InMemoryWebApiModule.forRoot(InMemoryDataService),
FormsModule,
routing
],
declarations: [
AppComponent,
HeroesComponent,
HeroDetailComponent,
DashboardComponent
],
bootstrap: [ AppComponent ],
providers: [
HeroService,
LocalStorageService // added for Local Storage
]
})
export class AppModule {
// added for Local Storage
constructor(storageService: LocalStorageService) {}
}
У меня есть комментарий к каждой строке, которую я добавил для реализации локального хранилища, которая содержит текст "LocalStorage". Если вы закомментируете эти три строки, компиляция и время выполнения работают нормально.
На данный момент я просто хочу иметь возможность успешно скомпилировать. Благодарю.
Примечание: это мой первый вопрос по стеку. Я нашел много ответов здесь в прошлом, и я старался изо всех сил следовать соглашениям, задавая этот вопрос. Любая продуктивная обратная связь о том, что я должен делать по-другому, всегда приветствуется.
2 ответа
Angular2-LocalStorage больше не поддерживается, вам придется использовать другую библиотеку, пока эта библиотека не получит активного сопровождающего. Я рекомендую Angular2 Cool Storage
Замените эти строки из "LocalStorageEmitter.ts" из node_modeule "angular2-localstorage"
import {Type} from "@angular/core/src/facade/lang";
import {provide} from "@angular/core/src/di";
import {ComponentRef} from "@angular/core";
export function LocalStorageSubscriber(appPromise: Promise<ComponentRef<any>>) {
appPromise.then((bla) => {
bla.injector.get(<Type>LocalStorageService);
});
}
с этим.
import {Type} from "@angular/core/src/type";
import {Provider} from "@angular/core/src/di";
import {ComponentRef} from "@angular/core";
export function LocalStorageSubscriber(appPromise: Promise<ComponentRef<any>>) {
appPromise.then((bla) => {
bla.injector.get(<Type<any>>LocalStorageService);
});
}
Это работает для меня...
Для более подробной информации => https://github.com/marcj/angular2-localstorage/issues/66