簡體   English   中英

angular.dart如何以編程方式創建自定義組件並添加到頁面?

[英]angular.dart how to create a custom component programmatically and add to page?

是否可以定義一個角度飛鏢組件,然后以編程方式創建該組件的實例並將其添加到您的網頁? 我希望可能會有這樣的事情:

import 'package:web_sandbox/web_sandbox.dart';
import 'package:angular/angular.dart' as ng;

void main() {
  document.body.appendHtml('<web-sandbox-component></web-sandbox-component>');
  var node = document.body.query('web-sandbox-component');
  ng.compile(node);
}

是否可以通過編程方式創建有角度的Web組件並將其添加到頁面中,也許就像上面的偽示例一樣,如果可以的話,又如何呢?

我認為Angular不可能做到這一點。

您可以在DOM中添加HTML標簽<web-sandbox-component>並告訴Angular它應該處理這個新的HTML,然后Angular會為該標簽實例化Angular組件(這是您鏈接的問題)。

我不認為這是一個限制。 您是否想通過這種方式無法做到這一點?

編輯

您的main代碼應如下所示:

我的文件看起來像

...
<body>
  <div id="mydiv"></div>
  ...
</body>

然后將<web-sandbox-component>附加到div

main() {
  print('main');
  ng.Injector inj = ngaf.applicationFactory().addModule(new MyAppModule()).run();
  var node = dom.querySelector('#mydiv');
  node.append(new dom.Element.html('<web-sandbox-component></web-sandbox-component>', validator: new dom.NodeValidatorBuilder()..allowCustomElement("web-sandbox-component")));
  ng.Compiler compiler = inj.get(ng.Compiler);
  ng.DirectiveMap directiveMap = inj.get(ng.DirectiveMap);
  compiler(node.childNodes, directiveMap)(inj, node.childNodes);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM