如何标记Angular2应用程序的版本?
有一些问题,如视图(通过templateUrl)无法在路由视图(子组件)中更新。我试过像

<script>
    System.config({
        // baseURL: '/',
        packages: {
            app: {
                format: 'register',
                defaultExtension: 'js'
            }
        }
    });
    System.import('v1/app/boot')
        .then(null, console.error.bind(console));
</script>

或者app/v1/bootbase但没用。
注意:仅作为记录,在开发时,缓存模板(通过templateUrl引入)的速度慢得令人恼火。应该使用匿名会话或清除浏览器等。我通过在export var fileVersion = '?tmplv=' + Date.now();这样的模块中引入一个全局var并在如下组件中使用它来解决这个问题:
@Component({
    selector: 'my-component',
    templateUrl: '/app/templates/my-component.html' + fileVersion,
})

所以我只需要刷新浏览器来查看更改。在生产中使用fileVersion = '';或类似的export var fileVersion = '?tmplv=v3';

最佳答案

我在处理同样的问题。
我正在寻找类似filerev node包的东西。
现在,我的解决方案是使用Angular2清除缓存:
首先导入运行时编译器。
import { RuntimeCompiler} from '@angular/compiler/src/runtime_compiler';
接下来在构造函数中注入运行时编译器。
constructor(private _runtimeCompiler: RuntimeCompiler)
最后用它来清除缓存。注意:这将清除所有模板。
this._runtimeCompiler.clearCache();

07-24 20:26