Mam wiele kątowych elementów 1.5, które wszystkie mają takie same atrybuty i strukturę danych. Myślę, że można je ponownie uwzględnić w pojedynczym komponencie, ale potrzebuję sposobu na dynamiczny wybór szablonu na podstawie interpolowanej wartości atrybutu type
.Czy istnieje sposób dynamicznego renderowania różnych szablonów dla komponentu kątowego 1.5
var myComponentDef = {
bindings: {
type: '<'
},
templateUrl: // This should be dynamic based on interpolated type value
};
angular.module('myModule').component('myComponent', myComponentDef);
nie mogę użyć templateUrl function($element, $attrs) {}
ponieważ wartości w $attrs
są uninterpolated więc nie dostanie typu określonego w przekazany w danych.
Mogę mieć jeden duży szablon z serią dyrektyw ng-if
lub ng-switch
, ale chciałbym zachować oddzielne szablony.
Alternatywnie, mogę po prostu zachować komponenty oddzielne i używać ng-switch
itp. W komponencie nadrzędnym, ale nie podoba mi się to, ponieważ wygląda na to, że jest dużo powtórzeń.
Szukam rozwiązania, w którym można użyć interpolowanego type
przekazanego do powiązań, aby dopasować szablon adresu URL do każdego typu, który zostanie następnie użyty do zbudowania komponentu.
Czy to możliwe?
Dzięki
nie sądzę, to jest możliwe, ponieważ wymaga usługi '$ compile', która nie jest dostępna dla komponentów. Możesz jednak użyć dyrektywy. –
Zobacz to proste i eleganckie rozwiązanie: https://stackoverflow.com/a/41743424/1274852 – hkong