Je déclare actuellement templateUrl par rapport à l'emplacement actuel de la fenêtre.
cvApp.directive('personalDetails', function () {
return {
restrict: 'A',
templateUrl: '../../Scripts/app/templates/personalDetails.html'
};
});
Comment puis-je rendre templateUrl relatif à la racine de l'application? Je cherche quelque chose comme ça:
templateUrl: '~/Scripts/app/templates/personalDetails.html'
AngularJS peut-il accomplir cela?
On dirait que c'est supporté. Extrait d'un fil de discussion sur AngularJS Google Group :
l'url avec le préfixe "/" est relatif au domaine, sans le "/" préfixe, il sera relatif à la page principale ("index.html") ou à l’URL de base (si vous utilisez location en mode html5).
Cela fonctionne bien:
templateUrl: '/Scripts/app/templates/personalDetails.html'
On dirait que vous essayez de faire des chemins relatifs aux applications de style ASP.NET mais côté client. Le correctif est en fait en HTML: ajoutez une balise de base dans la tête, comme ceci:
<base href="<%= Request.ApplicationPath %>" />
Ensuite, gardez vos chemins de gabarit relatifs à cela, comme dans
templateUrl: 'Scripts/app/templates/personalDetails.html'
Utilisez '././Scripts/app/templates/personalDetails.html'
cela a fonctionné pour moi.
angular 4 utilise webpack en tant que liant.
./ means relative path to current folder
../ means parent folder
domaine = src
root = src/index
par exemple, sous le fichier app.component.ts, url signifie que xxx.html xxx.css se trouvent dans le même dossier que xxx.ts.
./ is relative path as current folder
../ is relative path as parent folder
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})