Я открываю компонент angular2 с angularjs как angularjs. Одно из них - мое устаревшее приложение, и у меня есть требование, когда мне нужно показать какой-то новый компонент angular2 в окне. Я нашел решение для этого, используя который я могу открыть новое окно с этим компонентом.
angular.module('myModule').factory('popupWindow', ['$rootScope', '$compile', '$window',
function ($rootScope, $compile, $window) {
var html = '<survey></survey>';
var link = $compile(html); // note that compilation happens only once
return {
open: function () {
var scope = $rootScope.$new(true);
var w = $window.open('', '_blank', 'toolbar=0,width=1250,height=600');
copyStyles(document, w.document);
// using a cloneAttachFunction, cf. the docs and http://stackoverflow.com/questions/18064543/compile-angular-on-an-element-after-angular-compilation-has-already-happened
link(scope, function (cloned, scope) {
angular.element(w.document.body).append(cloned);
});
}
};
}]);
Но у меня сейчас другая проблема. У этого компонента есть md-autocomplete, и когда я нажимаю на него, он открывает md-параметры, но они привязаны к основному родительскому приложению. Когда я смотрел на инструменты разработчика, cdk-overlay-container прикрепляется к родительскому приложению, а не к открытому из него дочернему окну. Любое решение для этого? https://material.angularjs.org/latest/ используется в этом. изображение прикреплено здесь