2016-12-22 9 views
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 

答えて

3

が推奨されていませんが、我々使用する必要があります

var metadata = new Component(annotation); 
関連する問題