Reputation: 2733
I am using a service in my angular
application to create uibModal
as follows
function modal(modalConfig){
var modalInstance = $uibModal.open({
animation: true,
template: require("../a/b/xyz.html"),
controller: modalConfig.controller,
size: modalConfig.size,
controllerAs: modalConfig.controllerAs,
bindToController : true,
resolve: modalConfig.resolveObj
});
}
Please note the line
template: require("../a/b/xyz.html"),
I want to use a variable in its place like this
template: require(modalConfig.templateUrl),
but when i use a variable in place of hard coded value webpack
gives me
Critical dependencies:
83:22-54 the request of a dependency is an expression
I am not able to resolve this error. What can be the possible reason for it?
I have used node-express
server for continuous webpack
builds. I have looked at other answers too but they didn't solve my query.
Upvotes: 20
Views: 20664
Reputation: 2733
After much hit and trial found the solution. What I did is this:
template: require("../../scripts" + modalConfig.templateUrl + ".html")
Assumptions
scripts
../../scripts
.../../scripts + modalConfig.templateUrl + ".html"
will form the correct path for the file to be used.Mandatory Note
var context = "../../scripts";
template: require(context + modalConfig.templateUrl + ".html")
The base path (as in a part of the actual path) has to be hardcoded for basic reference, as in it helps webpack to create a list of all the modules which might be needed for the dynamic requires.
Reason (from webpack docs) , read dynamic requires.
Upvotes: 30