我有一个相当标准的bootstrap风格<table>
.我想使这个表的列可以调整大小,例如通过单击并拖动<th>
元素的右边框.我不能使用任何jQuery插件,因为我使用Angular并且jQuery依赖是不可接受的.
我想如果我可以在<th>
元素的右边界上捕捉click/mousemove事件,我可以实现我自己的调整大小逻辑(监视水平鼠标移动并相应地调整宽度),但我不知道如何做到这一点(据我所知,没有与元素边界相关的事件.
使用户可以调整列的最佳方法是什么?没有jQuery(最好是在Angular 2上下文中).
我有一堆只有数据的"类"(在.NET世界中我们称之为POCO对象),它们没有任何方法甚至构造函数.示例是客户,产品,用户实体,您将其命名为......
最初我开始使用typescript类,但现在我认为将它们声明为接口可能会更好.从性能的角度来看,不仅仅是......在C#中,我们习惯使用不同的接口,而对于"POCO"(普通旧clr对象或"仅数据"对象)我们使用只是一个类(有时甚至是结构).
在TypeScript中声明它们的正确方法是什么?
请注意,我主要理解(我认为)类和接口之间的技术差异(即接口是编译时构造),但我试图找出哪种语义符合这种情况.
PS:我见过类似的问题(比如这个),但是没有一个问题清楚明确地解决这个具体问题,所以请不要将其视为'可能重复'或'基于意见'(因为它不是): )
我想调用一个函数(同步),然后使用它的返回值作为初始发射(随后将一些其他运算符链接到生成的observable上).
我想在订阅期间调用此函数,所以我不能只使用Observable.of(() => getSomeValue())
.我已经看过bindCallback
(之前的fromCallback
),但我不认为它可以用于这项任务(如果我错了,请纠正我).我start
在v4文档中看到了静态运算符,但显然它没有在v5中实现(并且没有表明它在路上).RxJava也有fromCallable
运营商完成那个afaik.
我能想到的只有这样:
Observable.create((observer: Observer<void>) => {
let val = getSomeValue();
observer.next(val);
observer.complete();
})
Run Code Online (Sandbox Code Playgroud)
我认为就是这样.但是这对于简单的事情来说似乎很复杂,应该是这样的Observable.fromFunction(() => getSomeValue())
.如果我想异步运行它,就像start
运算符一样?如何在RxJS的当前版本中执行此操作?
我想使用Angular Material 2库,因为它的(不断增加的列表)组件.但是我习惯于引导它,它的好处就像响应实用程序和轻量级用户界面的典型事物.通过Bootstrap我主要是指它的CSS部分,我几乎从不需要它的JS功能.
例如,在Material lilbrary中,列表组几乎没有样式,而Bootstrap则使用它的css.
我记得读到结合它们并不是一个好主意,主要是因为它们的全球应用程序范围的风格会发生冲突.我找不到那个来源而且我很好玩 - 当前版本是真的吗?如果是这样,究竟什么是冲突的,如何解决?
当我知道在我的组件/类超出范围之前,observable肯定会完成(通过complete
或error
通知),我是否还需要取消订阅才能防止内存泄漏?换句话说,完成/错误编辑是否可以自动清理,所以我不必担心?
EF Core默认具有"代码优先心态",即它应该以代码优先的方式使用,即使支持数据库优先方法,它也只是对现有数据库进行逆向工程和创建代码优先表示.我的意思是,在代码"手工"(代码优先)中创建并从数据库(通过Scaffold-DbContext命令)生成的模型(POCO类)应该是相同的.
令人惊讶的是,官方EF Core文档显示出显着差异.下面是在代码中创建的模型的例子:https://ef.readthedocs.io/en/latest/platforms/aspnetcore/new-db.html这里是逆向工程从现有的数据库它的例子:HTTPS: //ef.readthedocs.io/en/latest/platforms/aspnetcore/existing-db.html
这是第一种情况下的实体类:
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是第二种情况下的实体类:
public partial class Blog …
Run Code Online (Sandbox Code Playgroud) 我正在尝试构建breadcrumb以显示在我的"shell"组件中(一个带有<router-outlet>
).我正在注入Angular的Router
服务,并通过遍历routerState.root
其firstChild
(或children[0]
)属性遍历它直到null,构建包含当前显示的路由的(链接)组件列表.结果是一个链接的ActivatedRoute
对象列表.当我将自定义数据附加到每个定义的路径(例如标题)时,我可以ActivatedRoute.data
在运行时获取(通过成员),因此我可以在面包屑中显示项目的名称.
但问题在于链接(网址).ActivatedRoute
拥有链中特定路径的所有信息,但我找不到将其序列化为单个字符串值的方法,以用作痕迹中的链接.我当然可以手动解析它,但这对于一些非常必要的东西来说太过分了.ActivatedRoute
有url(本身分成段),查询参数,矩阵参数等所有在不同的属性(其中一些甚至Observables,不必要地使事情复杂化)...但没有单个字符串属性,提供完整的URL(与params和一切).
顺便提一下,该Router
服务具有serializeUrl()
接受类型参数的成员,UrlTree
并将其转换为字符串.也许有一些方法可以转换ActivatedRoute
成UrlTree
,所以我可以使用Router.serializeUrl()
?
简单地说:如何从ActivatedRoute
(或ActivatedRouteSnapshot
)对象中获取序列化字符串?(显然我自己没有编写整个解析逻辑).
这似乎是必不可少的东西,因为ActivatedRoute本质上是字符串url的解析表示(如果我正确地理解了这整个概念)...... Router
甚至还有帮助方法来UrlTree
对象化字符串(从来没有解释如何在第一个中检索地点)...
正如Stephen Cleary著名的博客文章所指出的那样,永远不要尝试同步运行异步代码(例如,通过Task.RunSynchronously()
或访问Task.Result
)。另一方面,您不能在lock
语句中使用async / await 。
我的用例是ASP.NET Core应用程序,它使用IMemoryCache缓存一些数据。现在,当数据不可用时(例如,删除了缓存),我必须重新填充它,并且应该使用来保护lock
。
public TItem Get<TItem>(object key, Func<TItem> factory)
{
if (!_memoryCache.TryGetValue(key, out TItem value))
{
lock (_locker)
{
if (!_memoryCache.TryGetValue(key, out value))
{
value = factory();
Set(key, value);
}
}
}
return value;
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,工厂功能不能异步!如果必须异步该怎么办?
附言:此答案下方评分最高(超过70票)的评论要求相同,但完全没有答复。
编辑:我认为这不是一个重复的问题,从某种意义上说,链接的答案是作者的第三方库。没有第三方代码,没有解决方案吗?也许提到SemaphoreSlim.WaitAsync
可以成功使用吗?..它们各自的优缺点是什么?我们可以讨论一下吗?请重新打开问题。我不认为该问题可以通过链接的答案来解决(它只是提出了非常有主见的,主观的“ hack”)。
要设置@Input()
组件的字符串属性,我们可以使用两种语法:
<my-component caption="Hello there" type="primary" someThing="text value"></my-component>
要么:
<my-component [caption]="'Hello there'" [type]="'primary'" [someThing]="'text value'"></my-component>
我完全知道这两种绑定之间的区别。问题是:如果我有一堆要静态设置的字符串@Input()属性,我可以使用简单的属性绑定语法(第一个示例)而不是更多的“肉”属性绑定语法(第二个示例)吗?
有什么建议,为什么?即是要权衡些什么,即使设置静态字符串输入,始终使用属性绑定还是更可取的呢?
这是我能想到的一些缺点:
data-
破坏简单性的整个目的)。已经咬住我的实际例子是title
属性。但是主要优点是简单。在上面的示例中,您将同意第一种形式更优雅。在我的项目中,似乎很多属性都是常量(一次性设置)字符串属性,并且语法在可读性方面产生了实际差异。
那么...对自定义(非HTML)字符串属性使用属性绑定语法是一种不好的做法吗?(鉴于我知道/可以接受上述列出的一些限制的事实)
StreamController
我的一些域类包含需要处置的资源(例如)。因此,我dispose
在进行清理的类中实现了方法。dart 中没有正式的合同(就像IDisposable
在 C# 中一样)可以表明这一点(是的,实现类似的东西很简单,我的意思是没有内置的设施/既定的风格,据我所知)。所以我的dispose
方法就是任何其他方法。该类的用户很可能有一天会忘记调用它。
顺便说一句,我发现同一个StreamController
类(例如)以某种方式“强制”您调用它的close()
方法,如果遇到没有相应调用的实例,则会在 IDE 中发出警告close()
:Close instances of "dart.core.Sink"
。我认为这是在这个特定类的 dart 插件中实现的,我想知道是否有机会向包含dispose
. 我发现的最接近的是有助于继承,但我正在为我的类的用户@mustCallSuper
寻找类似的解决方案。
那么,是否有类似于 IDE 警告的东西@mustCallSuper
可以Sink.close()
用来引起用户对dispose
所需对象的注意?
假设我有一个组件,我想要应用一些边距,最好通过Bootstrap辅助类,例如mt-3来应用上边距.当我在组件上指定它们时,如下所示:
<my-custom-input
required
class="mt-3"
name="usr"
label="User"
placeholder="Please enter username"
[(ngModel)]="username">
</my-custom-input>
Run Code Online (Sandbox Code Playgroud)
在class="mt-3"
没有做任何事情!通过Chrome开发工具手动设置边距也是不可能的...我猜是因为my-custom-input
不是预定义的HTML元素(如div
),它不能定义边距?
在任何应用程序中,这似乎都是非常微不足道的事情,但我很惊讶到目前为止我找不到答案.我们如何重新定位这样的组件?至少,在父级别(而不是在组件模板内)指定边距似乎是至关重要的事情吗?
angular ×6
javascript ×4
css ×3
.net ×2
c# ×2
html ×2
html5 ×2
rx-java ×2
rxjs ×2
asp.net ×1
asp.net-core ×1
asynchronous ×1
binding ×1
dart ×1
dispose ×1
flutter ×1
rxjs5 ×1
typescript ×1