1
this SO answerのコードをComponentMetadata
で使用しようとしています。それは角度/コアで使用されていたようですが、もはや利用できなくなったと思いますか?角度のComponentMetadataの置換
ここにコードがあります。最終行にmetadata
を使用するにはどうすればよいですか?
function ExtendComponent(annotation: any) {
return function (target: Function) {
var parentTarget = Object.getPrototypeOf(target.prototype).constructor;
var parentAnnotations = Reflect.getMetadata('annotations', parentTarget);
var parentAnnotation = parentAnnotations[0];
Object.keys(parentAnnotation).forEach(key => {
if (isPresent(parentAnnotation[key])) {
// verify is annotation typeof function
if(typeof annotation[key] === 'function'){
annotation[key] = annotation[key].call(this, parentAnnotation[key]);
}else if(
// force override in annotation base
!isPresent(annotation[key])
){
annotation[key] = parentAnnotation[key];
}
}
});
var metadata = new ComponentMetadata(annotation);
Reflect.defineMetadata('annotations', [ metadata ], target);
}
}
私は本当にここに暗闇での撮影だが、私はMetadataCollector
を使用して、角度ソース、このテストを発見しました。
import { MetadataCollector } from '@angular/tsc-wrapped';
...
const collector = new MetadataCollector({quotedNames: true});
...
const metadata = collector.getMetadata(source);
const componentMetadata = metadata.metadata['MyComponent'];
これは代替でもありますか?私はそれをチェックアウトしようとしたが、new MetadataCollector({quotedNames: true})
で、私は
Supplied parameters do not match any signature of call target.
を取得し、私はnew MetadataCollector()
を試す場合でも、私はこのプログラムのロールアップ警告およびバンドルアップデート失敗したエラーを取得:ComponentMetadata以来
rollup: Treating 'fs' as external dependency
bundle update failed: Error transforming .../node_modules/typescript/lib/typescript.js
with 'commonjs' plugin: The keyword 'package' is reserved (57066:28) in .../node_modules/typescript/lib/typescript.js