我在Chrome浏览器中发现了一些奇怪的Date行为(版本74.0.3729.131(官方内部版本)(64位))。在Chrome开发者控制台中执行了以下javascript:
new Date('1894-01-01T00:00:00+01:00')
// result: Mon Jan 01 1894 00:00:00 GMT+0100 (Central European Standard Time)
new Date('1893-01-01T00:00:00+01:00')
// result: Sat Dec 31 1892 23:53:28 GMT+0053 (Central European Standard Time)
Run Code Online (Sandbox Code Playgroud)
尽管已经提供了有效的ISO8601值,但我已经在不同的浏览器中通过Date ctor阅读了有关非标准日期解析的信息。但这不仅仅是奇怪的o_o
在Firefox(Quantum 66.0.3(64位))中,相同的调用会导致预期的Date对象:
new Date('1894-01-01T00:00:00+01:00')
// result: > Date 1892-12-31T23:00:00.000Z
new Date('1893-01-01T00:00:00+01:00')
// result: > Date 1893-12-31T23:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
我在 stackblitz 上简单地复制了我想要实现的目标: https: //stackblitz.com/edit/angular-zb8kvg
我有一个组件(这里是 app.component),在该组件上声明了服务(MyService)。每次打开组件时,我都需要一个新的 MyService 实例,因此在我看来,该服务是在组件级别而不是在模块中声明的,这是正确的。
现在我想从此组件打开一个对话框(MatDialog -> TestComponent),它需要相同的服务实例。
我收到一个 StaticInjectorError,如控制台输出中所示。
如何在对话框中使用与调用组件相同的服务实例?
我试图通过管道将某些流传输到ffmpeg并捕获其输出,以便可以在代码中传递另一个流。这是一个代码示例,在我写入它之后,只是停止了该过程的继续StandardInput.BaseStream。
internal class Program
{
private static void Main(string[] args)
{
var inputFile = @"C:\Temp\test.mp4";
var outputFile = @"C:\Temp\test.mp3";
var process = new Process
{
StartInfo = new ProcessStartInfo
{
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true,
Arguments = "-i - -f mp3 -",
FileName = "ffmpeg.exe"
},
EnableRaisingEvents = true
};
process.ErrorDataReceived += (sender, eventArgs) => Console.WriteLine(eventArgs.Data);
process.Start();
process.BeginErrorReadLine();
using (var input = new FileStream(inputFile, FileMode.Open))
using (var output …Run Code Online (Sandbox Code Playgroud)