1

助けてくれてありがとう。typescript を使用して 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」を含むローカルストレージを実装するために追加したすべての行にコメントがあります。これらの 3 行をコメント アウトすると、コンパイルとランタイムが正常に機能します。

この時点で、正常にコンパイルできるようにしたいだけです。ありがとう。

注:これはスタックに関する私の最初の質問です。過去にここで多くの回答を見つけました。この質問をする際には、慣例に従うように最善を尽くしました。尋ねる際に私が別の方法で行うべきことについての生産的なフィードバックは大歓迎です.

4

2 に答える 2

0

node_modeule「angular2-localstorage」の「LocalStorageEmitter.ts」からこの行を置き換えます

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

于 2017-04-07T06:40:16.127 に答える