2017-09-27 7 views
1

2つのJSONオブジェクトの差分をAngular 4ビューで表示しようとしていますが、AngularJS用にこのライブラリ(angular-object-diff) 。そのライブラリの

デモ:Link

私は、これは、ライブラリ、次のようJSをインポートしようとした:私はインポートしようとしています
JSファイル:angular-object-diff.jsは、doesntのは、私のtypings.dで

エクスポート変数を持っています。私の角度-cli.jsonでAngular 4に特定のJavascriptライブラリをインポートする(ライブラリで変数をエクスポートしない場合)

declare var ObjectDiff: any; 


、私は

を追加しました:TSは(私は、次の追加しました)私の見解では

const json1 = { 
    name: 'John' 
}; 
const json2 = { 
    name: 'Johnny' 
}; 
const diff = ObjectDiff.diffOwnProperties(json1, json2); 
this.jsonViewData = ObjectDiff.toJsonDiffView(diff); 

:私のコンポーネントファイルで

<pre ng-bind-html="jsonViewData"></pre> 
<pre> {{jsonViewData}}</pre> 

何も動いていないようで、私は「 "ObjectDiff" は、コンソールで定義されていないというエラーが出ます

私が間違っていると誰かにお知らせください。 JSONの差分を表示するための 提案も歓迎している:)

を**あなた

+0

angle4ライブラリと互換性のあるものを使用しないで、そのライブラリを使用することはできません。 – toskv

+0

はい、それを得ました。ありがとう@toskv。 – Jarvis

答えて

1

ライブラリは何もエクスポートしませんありがとうございました。 IIFEを使用して、ローカル変数でグローバルスコープを汚染しません。外部からローカル変数に到達することは不可能です。これはModuleパターンを非常に効果的に(そして迷惑なものに)します。

ライブラリはAngularJS angularをグローバルに使用しており、存在することを想定しています。この場合、Angular 4アプリケーションはグローバルangularをモックする必要があるため、問題が発生します。さらに、コード自体はAngularJS固有のユニット($sceサービス)に依存しています。

ライブラリは、期待どおりにフォークされ、変更される必要があります。 angularのコメントは削除する必要があります。スクリプトがモジュールスコープで実行されることを考慮して、IIFEを削除し、適切なエクスポートを追加する必要があります。

+0

意味があります、詳細な説明は非常にありがとうございます。 – Jarvis

+0

ようこそ。 Angular 4で同じことをしたいと考えている場合、$ sceを同様のhttps://angular.io/api/platform-b​​rowser/DomSanitizer 'bypassSecurityTrustHtml'に置き換えたいと思うでしょう。 – estus

関連する問題