我正在使用 APP_INITIALIZER 在其他一切之前加载应用程序配置。这工作正常。
现在,我还必须通过询问服务器来获取当前用户。但是,服务器的 url 位于应用程序配置中(我无法更改)。
我的问题是:
在加载应用程序之前,我如何才能等待我的所有承诺以正确的顺序实现?
我在我的application module但应用程序在加载配置后立即启动,并且不等待我的用户服务。
providers: [
{ provide: APP_INITIALIZER, useFactory: loadConfigFactory, deps: [AppConfig, UserService], multi: true }
]
export function loadConfigFactory(config: AppConfig, userService: UserService) {
return () => config.load().then((serverURL) => userService.setCurrentUser(serverURL));
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能确保我的配置和我的用户在其他一切之前设置?
编辑:
我忘了在setCurrentUser承诺中添加“return”语句。所以就解决了。
我不会删除该帖子,因为它可能会帮助其他想知道如何在加载应用程序之前等待几个承诺完成的人。
我已经构建了一个扩展面板列表,我发现您必须按箭头才能展开它,这很烦人。直观上,当您单击标题上的任意位置(来自测试人员的反馈)时,您希望展开面板。
有办法做到吗?我没有看到任何属性,标头构建器只允许小部件作为参数。
我正在使用 Visual Studio Community,我的 javascript 文件中的 eslint 警告显示为红色。这真的很令人困惑,让你一开始觉得有编译错误,但实际上没有,一切都很好。
那么,我的问题是,如何将下划线颜色更改为绿色?我想有一种方法可以告诉 Visual Studio 这些实际上是警告而不是错误,但我在任何地方都找不到这个选项。
我不敢相信我在网上找不到任何答案,我一定不是唯一对此感到恼火的人......
编辑:这是一个“错误”的示例:
我试图在数组中显示所有元素并用换行符分隔它们,但我无法使它工作.
这是我尝试过的:
{{ user.roles | join('<br/>') }}
{{ user.roles | join('<br/>' | raw) }}
{{ user.roles | join('\n' | nl2br | raw) }}
Run Code Online (Sandbox Code Playgroud)
每次我得到类似的东西:
ROLE_PARENT <BR/> ROLE_ADMIN <BR/> ROLE_MANAGER <BR/> ROLE_USER
如何告诉twig呈现<br/>为html?
我可以遍历数组,但这不是我第一次尝试渲染html标签,我想要一个明确的解决方案来解决这个问题.
这是我的示例数据模型
我已经声明了以下类:
@Entity({
name: 'user'
})
export class User {
@Column({ type: 'int4' })
@PrimaryColumn()
userid: number
@Column({name: 'name', type: 'varchar', length: 30})
name: string
@Column({name: 'age', type: 'int2'})
age: number
@ManyToMany(() => Department, (department)=> department.users)
@JoinTable({
name: 'department_user'
})
departments: Department[]
}
@Entity({ name: 'department' })
export class Department {
@Column({ type: 'int2' })
@PrimaryColumn()
departmentid: number
@Column({type: 'varchar', length: 50})
title: string
@Column({type:'text'})
notes: string
@ManyToMany(() => User, (user)=> user.departments)
@JoinTable({ name: 'department_user' })
users: User[]
}
Run Code Online (Sandbox Code Playgroud)
每当我运行该应用程序时,它都会创建 …
我的 winform 应用程序遇到了一个非常奇怪的情况。
我试图改变某种形式的设计,但控件被锁定,所以我无能为力。
如果我右键单击它,则不会按下锁定按钮。如果我检查控件的属性,所有内容都会变灰,但“锁定”属性设置为 false。
文档大纲(主窗体未锁定):
该项目已有 10 年历史,最初是使用 .NET 2 开发的(现在是 3.5)。我可以改变很多形式,但不是这个。
谢谢你的帮助
PS:我真的不想以新的形式复制/粘贴(该项目一团糟)。
让我们假设这种情况
实体
public virtual List<Address> AddressHistory { get; set; }
public Address Address
{
get
{
if (AddressHistory.Any())
{
return AddressHistory.OrderByDescending(x => x.CreationDate).FirstOrDefault();
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
根据条件请求地址时,如下所示:
dbContext.MyEntity.Where(e => e.Address.Street == "some stuff");
Run Code Online (Sandbox Code Playgroud)
我得到一个空引用异常。
为什么呢 有办法使它起作用吗?
编辑:对于那些认为地址可能为空的人,在这样做的时候可以使用:
dbContext.MyEntity.Where(e => e.AddressHistory.OrderByDescending(x => x.CreationDate).FirstOrDefault().Street == "some stuff");
Run Code Online (Sandbox Code Playgroud)
编辑:对于将其标记为重复的人,我认为您在这里不明白这个问题。请删除标记。
因此,总结一下:
如果我使用getter => null异常,因为子级(AdressHistory)不会被延迟加载。如果我直接在efcore表达式中的getter中使用代码,则它可以工作。
这意味着使用吸气剂在EFCore中不起作用。
c# ×2
angular ×1
ef-core-2.1 ×1
eslint ×1
flutter ×1
javascript ×1
lazy-loading ×1
locked ×1
promise ×1
symfony ×1
twig ×1
twig-filter ×1
typeorm ×1
typescript ×1
winforms ×1