Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么从@Component';s装饰师-棱角4+;_Javascript_Angular_Typescript_Angular5_Angular6 - Fatal编程技术网

Javascript 为什么从@Component';s装饰师-棱角4+;

Javascript 为什么从@Component';s装饰师-棱角4+;,javascript,angular,typescript,angular5,angular6,Javascript,Angular,Typescript,Angular5,Angular6,我正在寻找在组件中有条件地加载样式的方法。 当我这样做时,我尝试了以下方法: @Component({ selector:console.log('test',this)||'login-with-password', //logs: undefined templateUrl:'./login-with-password.html', styleUrls:['./login-with-password.css'], preserveWhitespaces:fal

我正在寻找在组件中有条件地加载样式的方法。 当我这样做时,我尝试了以下方法:

@Component({
    selector:console.log('test',this)||'login-with-password', //logs: undefined
    templateUrl:'./login-with-password.html',
    styleUrls:['./login-with-password.css'],
    preserveWhitespaces:false
})
令我惊讶的是,这被记录为未定义。 我一直在想这怎么可能,因为this关键字应该总是指向某个东西,ether window或null


decorator在什么上下文中运行,而其上下文是未定义的?

@Component是一个decorator,它只保存组件元数据,将一个角度类定义为组件

Window对象是浏览器窗口对象,请尝试在控制台中记录Window。log()在@component()内,它将记录Window对象

“this”关键字不一定总是指向某个东西。 在严格模式下,如果未设置“this”的值,则该值将未定义。 关键字将仅保留对对象的引用。它包含调用函数的对象的值


ngOnInit()是在加载组件时第一次调用的方法,您可以通过console.log(这)找到调用ngOnInit()方法的对象的所有数据。

“如果上下文未定义,装饰器在什么上下文中运行?”-你在提问之前读过这个问题吗?装饰程序是在严格模式下运行的,因此
这个
是未定义的。您尝试使用的技巧在AOT中不受支持,因此在Angular中这样做不是一个好主意。应该怎么做取决于你想要达到什么。如果你有兴趣解决它,考虑再问你的情况解释的问题。