1,在app.module.ts中加入:
providers: [
//{ provide: LocationStrategy, useClass: HashLocationStrategy } // 采用hash路由
{ provide: LocationStrategy, useClass: PathLocationStrategy }, // 采用html5路由
],
2,在index.html文件中加入:
<base href="./">
组件的html文件引用资源可以采用路径形式: assets/.../*.png 或 /assets/.../*.png
组件的css文件引用资源可以采用路径形式:../../assets/.../*.png
如果项目使用h5路由(即去除#),且项目中有用新标签页打开新路由,则index.html要改为绝对路径形式:
<base href="/">,如果布署在其它目录可以写为例:<base href="/dirname/">,否则加载资源可能出现路径错误。
编译命令不加参数: --base-href ./
3,修改服务器配置
1,如果是静态网页,例nginx:修改nginx.conf,在网站的server->location配置中加入:
try_files $uri $uri/ /index.html =404;
例:
server {
set $htdocs /www/deploy/mysite/onbook;
listen 80;
server_name onbook.me;
location / {
root $htdocs;
try_files $uri $uri/ /index.html =404;
}
}
注意:如果应用布署在子目录,比如/var/www/html/game/,那么配置改为:
try_files $uri $uri/ /game/index.html =404;
也可以在server中新加一个location,例:
location /game {
try_files $uri $uri/ /game/index.html =404;
}
配置后reload一下:sudo server nginx reload
2,如果是动态网站,比如采用nodejs写的服务器,设置当 站内路径(req.path) 不包括 /api 时,都转发到 AngularJS的ng-app(index.html)。
if(req.path.indexOf('/api')>=0){
res.send("server text");
}else{ //angular启动页
res.sendfile('app/index.html');
}
4,angular vscode常用插件:
- Angular Schematics
- Angular Language Service