目前我正在用这段代码动态加载我的一些组件.
export class ComponentOutlet {
constructor(
private vcRef: ViewContainerRef,
private compiler: Compiler,
private dataService: DataService
) { }
private _createDynamicComponent() {
// Some logic to decide which component should be loaded
return MyComponent;
}
ngOnChanges() {
this.compiler.compileComponentAsync(this._createDynamicComponent())
.then(factory => {
const injector = ReflectiveInjector.fromResolvedProviders([], this.vcRef.parentInjector);
this.vcRef.clear();
this.vcRef.createComponent(factory, 0, injector);
});
}
Run Code Online (Sandbox Code Playgroud)
问题是MyComponent有一些@Input和Output绑定.是否可以在此处设置此绑定?我怎样才能做到这一点?
我最近将 Angular 应用程序从 v9 升级到了 v10。
我注意到不再支持未修饰的类。看这里
因此,在ng upgrade我的抽象组件中,没有装饰的组件已更改为具有@Directive()装饰器。
例如
export abstract class AbstractFormControl implements ControlValueAccessor { ... }
Run Code Online (Sandbox Code Playgroud)
被改为
@Directive()
export abstract class AbstractFormControl implements ControlValueAccessor { ... }
Run Code Online (Sandbox Code Playgroud)
为什么 Angular 使用@Directive. 难道不是@Component一个更好的方法吗,因为类更像是一个组件而不是指令?意图是什么?
我有一个叫api的服务
getItems(itemId: number): Observable<any> {
return this.http.get(url, headers)
.map(this.extractDataSingle)
.catch(this.handleError)
}
Run Code Online (Sandbox Code Playgroud)
如果服务器以4xx响应,catch则调用该部件.这是我的handleError方法.
private handleError = (error: any) => {
//Here I want to redirect to login.
}
Run Code Online (Sandbox Code Playgroud)
我想重定向到该login页面.简单的打字this._router.navigate(['Login']);不起作用,因为我必须返回一个Observable.返回一个空的Observable return Observable.empty;也不起作用,因为我的订阅者收到错误:Cannot read property 'subscribe' of undefined.
如何实现我将用户重定向到登录页面?当然,我可以更改我的订阅者以捕获错误并通过我的订阅者重定向.但我认为最好在我的服务中处理错误.
我也对如何处理4xx错误的完全不同的解决方案持开放态度.
编辑:感谢@GüntherZöschbauer.这return Observable.of([]);正是我所需要的.但是,请注意this.为了有机会获得router在 handleError方法中使用bind(this)的.catch(this.handleError.bind(this))
getItems(itemId: number): Observable<any> {
return this.http.get(url, headers)
.map(this.extractDataSingle)
.catch(this.handleError.bind(this))
}
Run Code Online (Sandbox Code Playgroud)
否则你无权访问你的router.
什么是正确的表达和导入Observable.of([]);.
import { of } from 'rxjs'; 不适合我.
我开发了一个NestJS 服务器应用程序。NestJs 是一个用 TypeScript 编写的 Express 运行的节点服务器。
现在我想在我的 rapsberry pi 上部署该应用程序。但是,我只能从本地主机访问服务器。如果我尝试从不同的客户端访问,则不会返回任何内容。(图中的“^C”只是取消符号;D)
我已经将主机名设置为0.0.0.0. 我还可以做些什么?
# /src/main.ts
import {NestFactory} from '@nestjs/core';
import {AppModule} from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.enableCors();
await app.listen(3001, '0.0.0.0');
}
Run Code Online (Sandbox Code Playgroud)
如何使用Angular 2在HTML模板中插入HTML标签?
例如:
<h1> {{title ? title : '<i>Title not set</i>'}} </h1>
Run Code Online (Sandbox Code Playgroud)
如果title未定义,那么应该有一个Title not setin i-Tags.
如果我使用上面的语法,Angular将精确显示表达式(表示{{,?,:,}}}并且不对其进行评估.
我正在寻找一种算法来计算以下内容:我有一个带有预定义区域的图像(附加图像上的绿色图像).用户绘制红色矩形,算法应计算红色矩形是否与绿色矩形匹配.例如,附加图片上的红色矩形的位置就可以了.
计算这个的好方法是什么?有没有最佳实践算法?
我的想法是计算红色矩形的中间,然后确定中间是否在绿色矩形内.另外,我会计算长度和高度是否与绿色长度和高度相匹配(25%或更多).
这是一个好主意吗?还有其他建议吗?
algorithm image-processing pattern-matching template-matching
在我的Angular App中,我有一个名为AppInjector的全局变量,该变量返回Injector。该变量ist设置在中AppModule。
export let AppInjector: Injector;
@NgModule({
declarations: [
AppComponent,
],
bootstrap: [AppComponent],
})
export class AppModule {
constructor(private injector: Injector) {
AppInjector = this.injector;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一些辅助功能,可以通过AppInjector特殊服务获得帮助。辅助函数位于单独的文件中,不属于任何组件。例如:
function initNodeTemplate() {
diagram.nodeTemplateMap.add(NodeCategory.Question,
GO(go.Node, "Auto",
{
click: (evt, obj) => {(AppInjector.get(MyService) as MyService).myFunction(obj)},
},
// other stuff ...
));
}
Run Code Online (Sandbox Code Playgroud)
问题是,该角的编译器警告我关于循环依赖(因为AppInjector,WARNING in Circular dependency detected:
src\app\app.module.ts -> src\app\frame\frame.module.ts -> src\app\designer\designer.module.ts -> src\app\designer\designer.component.ts -> src\app\designer\helpers\templates.helper.ts -> src\app\app.module.ts。
我如何摆脱这个警告?
我知道我可以将服务注入组件,然后将服务传递给助手功能。在这种情况下,我可以将其detailService作为参数传递给initNodeTemplate(),因此不再需要AppInjector …
我本地安装了 XAMPP。由于某些原因(Java-Php-Bridge)我必须使用 FastCGI。所以我使用本指南进行设置:http://www3.umoncton.ca/dashboard/docs/use-php-fcgi.html
这工作正常,但现在我无法访问http://localhost/phpmyadmin/ 错误是:
禁止访问!
新的XAMPP安全概念:
只能从本地网络访问所请求的目录。
可以在文件“httpd-xampp.conf”中配置此设置。
这是我的“httpd-xampp.conf”文件:
#
# XAMPP settings
#
<IfModule env_module>
SetEnv MIBDIRS "C:/xampp/php/extras/mibs"
SetEnv MYSQL_HOME "\\xampp\\mysql\\bin"
SetEnv OPENSSL_CONF "C:/xampp/apache/bin/openssl.cnf"
SetEnv PHP_PEAR_SYSCONF_DIR "\\xampp\\php"
SetEnv PHPRC "\\xampp\\php"
SetEnv TMP "\\xampp\\tmp"
</IfModule>
#
# PHP-Module setup
#
LoadFile "C:/xampp/php/php5ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
#LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"
LoadModule fcgid_module modules/mod_fcgid.so
#<FilesMatch "\.php$">
# SetHandler application/x-httpd-php
#</FilesMatch>
#<FilesMatch "\.phps$">
# SetHandler application/x-httpd-php-source
#</FilesMatch>
FcgidInitialEnv PHPRC "c:/xampp/php"
AddHandler fcgid-script .php
FcgidWrapper "c:/xampp/php/php-cgi.exe" .php
#
# PHP-CGI setup
#
#<FilesMatch …Run Code Online (Sandbox Code Playgroud) angular ×6
rxjs ×2
typescript ×2
algorithm ×1
angular10 ×1
express ×1
fastcgi ×1
mod-fastcgi ×1
nestjs ×1
node.js ×1
php ×1
phpmyadmin ×1
rxjs5 ×1
rxjs6 ×1
xampp ×1