Angular [Q] [Updating]

  • ngrx devtools 使用时,当配置了需要编译检查错误如:
import { NgModule } from '@angular/core';
import { StoreModule } from '@ngrx/store';
import { StoreDevtoolsModule } from '@ngrx/store-devtools';
import { environment } from '../../environments/environment';
import { agentReducer } from './reducers/agent.reducer';


@NgModule({
  declarations: [],
  imports: [
    StoreModule.forRoot({ agent: agentReducer }, {
      // runtimeChecks: {
      //   strictStateImmutability: true,
      //   strictActionImmutability: true,
      //   strictStateSerializability: true,
      //   strictActionSerializability: true,
      // }
    }),
    StoreDevtoolsModule.instrument({
      maxAge: 20,
      logOnly: environment.production
    })
  ]
})
export class AppStoreModule { }

就算在外层逻辑中修改了store里的相同名字的变量,也会报错,错误信息如:
core.js:6014 ERROR TypeError: Cannot assign to read only property '1' of object '[object Array]' at Array.splice ()

关闭编译检查就能work了 = =

  • ngrx reducer的处理逻辑
  • ”散布运算符仅执行浅复制,而不处理深层嵌套的对象。您需要复制对象中的每个级别以确保不变性。“

constructor & ngOnit的区别

  • 无论您是否在TypeScript类中实现它,在创建类的实例时仍会调用它。这是因为将Typescript类构造函数转换为JavaScript构造函数:
  • constructor 会被强制调用 而ngOnit只会在实现方法的时候被调用
  • @Input通信机制是作为后续更改检测阶段的一部分进行处理的,因此输入绑定在构造函数中不可用。 当Angular开始更改检测时,将构建组件树,并已调用树中所有组件的构造函数。同样在这一点上,每个组件的模板节点都添加到DOM中。在这里,您可以获得初始化组件可能需要的所有数据-DI提供程序,DOM和输入绑定。
  • 当Angular调用ngOnInit时,它已经完成了组件DOM的创建,并通过构造函数和已处理的输入绑定注入了所有必需的依赖项。因此,这里您具有所有必需的信息,这使它成为执行初始化逻辑的好地方
  • It’s a common practice to use ngOnInit to perform initialization logic even if this logic doesn’t depend on DI, DOM or input bindings.

后端代理的跨域问题

官网

你可能感兴趣的:(Angular [Q] [Updating])