Skip to main content

Angular FAQ

Multiple entry points / pages

# ng serve = ng serve --app=0
ng serve --app=1

浏览器支持

手动标识发生了变化

  • 注入 ChangeDetectorRef
  • 当发生了变化但 angular 未检测到的时候, 手动调用 markForCheck
    • 例如在别的地方做了事件监听影响绑定对象
    • 绑定对象使用的 getter/setter, 而不是属性

ViewChild 为 null/undefined

  • 需要在内容初始化后才不为 undefined
  • 如果为 null, 检测是否有 ngIf

动画在 Safari 下无效

  • 需要 web-animate
  • npm install --save web-animations-js
  • 然后在 polyfills.ts 添加 import 'web-animations-js'

如何在 ios 开发调试

  • 建议使用 safari 进行开发
  • Safari 的技术预览版也都可以模拟设备和开启控制台
  • ios 上默认为 Safari 浏览器内核, 因此在浏览器中调试和在真机调试没太大区别

date pipe 在 ios/Safari 下无法正常工作

  • https://github.com/angular/angular/issues/7008
  • 由于 Safari 对时间格式的要求比较严格, 例如 '2017-1-1' 这样的格式在 Safari 下是无法正常处理的
  • 最好的解决办法是基于 momentjs 实现一个自己的 date pipe
  • 或者在传入到 date pipe 前确保 date 是正确的格式

AoT 无法 Watch

  • #12867
  • 只能是在最终发布构建时使用 aot
  • 现在可以了

AoT 在遇到 Sass 出现找不到资源的情况

  • #11897
  • AoT 不能与 SASS 同时使用
  • 不支持 CSS + 字体应用
  • 可以考虑在外部引入

AoT 无法处理 Router 的 loadChildren

需要使用 AppModuleNgFactory, 使用 AoT 编译出来

/deep/ 被废弃

scss 全局变量