所以有條件地加載CSS的方式我想出來的並不是很優雅,但工程。
我使用的是Angular UI路由器,當涉及到解決路由問題時,我使用angular.element()
附加/刪除link
標籤和CSS表單。在我的情況下,它是後端和前端的抽象路由,因此它在瀏覽子路由時僅解析(並追加/移除)鏈接標記一次。
// Frontend - add Bootstrap
$stateProvider
.state('front', {
url: "",
abstract: true,
templateUrl,
resolve: {
importBootstrapCss() {
let head = angular.element(document.querySelector('head'));
head.append("<link rel='stylesheet' type='text/css' href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css' id='bootstrap-css'>");
}
}
});
// Backend - remove Bootstrap
$stateProvider
.state('backend', {
url: "/backend",
abstract: true,
templateUrl,
resolve: {
deleteBootstrapCss() {
let link = angular.element(document.getElementById('bootstrap-css'));
link.remove();
}
}
});