この質問は繰り返されますが、以前はパッケージが既にインストールされていた瞬間に適切な回答を提供していません
1。インストール済みパッケージ
npm install moment-timezone --save
内部node_modulesディレクトリ
|
|-モーメント
| --moment-timezone
存在するディレクトリ
2。Index.html含まれるスクリプト
<script src="node_modules/moment-timezone/moment-timezone.js"></script>
System.config.js
var map = {
'moment': 'node_modules/moment',
'momentzone': 'node_modules/moment-timezone'
};
var packages = {
'moment': { defaultExtension: 'js' },
'momentzone': { defaultExtension: 'js' }
};
.component.tsファイル内
import * as moment from 'moment/moment';
export class TimeComponent implements OnInit{
ngOninit(){
console.log(moment("2014-06-01T12:00:00Z").tz('America/Los_Angeles').format('ha z'));
}
}
エラーを防ぐためにインポートする必要があるものプロパティtzはタイプ 'Moment'に存在しません
これが役立つかもしれません。
Angular-cliまたはnpmインストールの場合、次のコマンドを実行します。
Sudo npm install moment moment-timezone --save
npm install @ types/moment @ types/moment-timezone --save-dev
npm systemjs.config.jsの場合
map: {
'moment': 'npm:moment',
'moment-timezone': 'npm:moment-timezone/builds'
}
packages: {
'moment': {
main: './moment.js',
defaultExtension: 'js'
},
'moment-timezone': {
main: './moment-timezone-with-data-2010-2020.min.js',
defaultExtension: 'js'
}
}
.tsファイルでタイムゾーンを使用する場所
import * as moment from 'moment-timezone';
@Component({
selector: 'my-app',
template: `<h1>Hello {{name}}</h1>`,
})
export class AppComponent {
name = 'Angular';
jun = moment();// creating obj.
constructor() {
this.jun.tz('America/Los_Angeles').format('hh : mm : ss a z');
console.log(this.jun.tz('America/Los_Angeles').format('hh : mm : ss a z'));
console.log(moment.tz.names()); // for all time zone.
}
コマンドラインにmoment-timezone
をインストールします。
npm i -S moment-timezone
コンポーネントにmoment-timezone
をインポートします。
import * as moment from 'moment-timezone';
ドキュメントに従って使用してください:
this.time = moment().tz('America/New_York').format('HH:mm:ss z')
16:20:42 EDT
注:
moment
は、moment-timezone
の依存関係であるため、意図的にインストールまたはインポートされませんでした。
moment-timezonefor Angular in 2018:
Moment.jsとmoment-timezoneをインストールします
npm install moment moment-timezone @types/moment-timezone --save
これらのモジュールを.tsファイルにインポートします
import * as moment from 'moment'; import 'moment-timezone';
Githubの問題: 「tz」ビルドエラーの解決方法
そのエラーは、TypeScriptコンパイラがmoment
の型定義(型指定)で.tz(...)
メソッドを見つけられないことを示しています。
必要なのは_moment-timezone
_のタイピングをインストールするだけなので、tz
をmoment()
に追加します。
(通常、使用するすべてのlibにタイピングをインストールします。問題は、angularおよびmomentなど)の一部がタイプ定義ファイルをlibsのソース自体に埋め込んでいるためです。 their typingsをインストールする必要がなくなります。)
したがって、前述のように、_moment-timezone
_のタイピングをインストールするだけです。
_# if you have typings version 1.X.X
typings install moment-timezone --save --global
# if you have typings version 0.X.X
typings install moment-timezone --save --ambient
_
そして、すべてがうまくいくはずです...あなたがもう一つのことをするなら...
構成の名前をmomentzone
から_moment-timezone
_に変更します(そして_.js
_ファイルを追加します):
_var map = {
'moment': 'node_modules/moment/moment.js',
'moment-timezone': 'node_modules/moment-timezone/moment-timezone.js'
};
var packages = {
'moment': { defaultExtension: 'js' },
'moment-timezone': { defaultExtension: 'js' }
};
_
ここで使用する名前は、import
で使用する名前なので、これが必要です。また、import
で使用する名前は、TypeScriptコンパイラが型定義の検索に使用する名前です。そして、インストールしたタイピングは、momentzone
ではなく、_moment-timezone
_というモジュールを定義します。
その後、次を使用します。
_import * as moment from 'moment';
import 'moment-timezone'; // since this module only has side-effects, this is enough
_
これですべてです。
PS .:上記の設定で、コンパイラはmoment
のソースからmoment
のタイピングを選択し、DefinitelyTypedリポジトリ(typings.json)から_moment-timezone
_のタイピング(tz
関数)を選択します。
しかし、時々、彼らはニースをプレイしません。その場合は、ソースからのmoment
のタイピングをDefinitelyTypedリポジトリ(typings.json)からのmoment
のタイピングでオーバーライドする必要があります。
言い換えれば:
_# Only do this if installing moment-timezone alone didn't work...
# if you have typings version 1.X.X
typings install moment moment-timezone --save --global
# if you have typings version 0.X.X
typings install moment moment-timezone --save --ambient
_
私は同じ問題を抱えていて、acdcjuniorが示唆したことをすべて行いましたが、moment-nodeのタイピングもインストールする必要がありました。
typings install dt~moment-node --save --global
これを行った後、それは魅力のように働いた。