Angular核心概念

依赖性注入

依赖性注入框架 令牌 构建 依赖 Injector→ provider→object

依赖注入(默认每次注入的实例是同一个实例)

constructor(private oc:overlayContainer){
const injector =ReflectiveInjector.redolveAndCreate({
    {provide:Person,useClass:Person},
    {provide:Address,useFactory:()=>{
        if(environment.production){
            return new Address('北京','朝阳');
        }else{
            return new Address('西藏','拉萨')
        }
     }
    },
    {provide:Id,useFactory:()=>{
        return Id.getInstance('idcard');
    }
    }
}

每次注入的内容为新创建的实例

constructor(private oc:overlayContainer){
    {provide:Person,useClass:Person},
    {provide:Address,useFactory:()=>{
        return()=>{
            if(environment.production){
                return new Address('北京','朝阳');
            }else{
                return new Address('西藏','拉萨')
            }
        }

     }
    },
    {provide:Id,useFactory:()=>{
        return Id.getInstance('idcard');
    }
    }
}

子注入器(每次注入的内容为新创建的实例)

const childInjector=injector.resolveAndCreateChild([Person]);

注入常量

prividers:[{provider:'BASE_CONFIG',useValue:'http://localhost:3000'}]

ChangeDetection

检测程序内部状态,然后反映到UI上 引起状态变化:Events、XHR、Timers ApplicationRef监听NgZone的onTurnDone,然后执行检测

默认策略 Onpush策略

@Component({
    changeDetection:changDetectinStrategy.OnPush
})

主动检测

constructor(private cd:ChangeDetectorRef){}
//需要检测的地方加入下列代码
this.cd.markForCheck();

Last updated

Was this helpful?