小编Mic*_*lix的帖子

使用*ngIf时,为什么angular2模板局部变量在模板中不可用?

使用*ngIf时,第1部分"#test"未定义

当引用可以隐藏/"销毁"的输入时(因为使用了*ngIf并且某些元素被销毁),由angular2语法#(在下面的示例中为#test)创建的局部变量不起作用,即使元素存在于页面中.

代码是:

@Component({
    selector: 'my-app',
    template: `<h1>My First Angular 2 App</h1>
    <button (click)="focusOther(test)">test</button>
    <input #test *ngIf="boolValue" >
    `
})
export class AppComponent { 

  private isVisible = false;

  focusOther(testElement){
    this.isVisible = true;
    alert(testElement);
    testElement.focus();
  }

}
Run Code Online (Sandbox Code Playgroud)

警报显示"未定义",因为没有任何内容传递给该函数.

是否有解决方案使其工作?我的目标是集中一个将要创建的元素.

Mark Rajcok给出的解决方案:使用一个使用elementRef并在元素上调用.focus()的afterViewInit创建一个指令.

有关第1部分的工作版本,请参阅此plunker:http://plnkr.co/edit/JmBBHMo1hXLe4jrbpVdv?p = preview

第2部分如何在初始创建后重新聚焦该元素

一旦修复了"创建后焦点"的问题,我需要一种重新聚焦()组件的方法,比如"test.focus()"(其中#test是输入的局部变量名,但不能像我之前演示的那样使用).

Mark Rajcok提供的多种解决方案

angular

32
推荐指数
1
解决办法
2万
查看次数

用于生产和缓存管理的SystemJS版本控制(requirejs urlArgs替代)

我想从requirejs迁移到SystemJS但是我没有找到解决方案,因为requirejs有模块版本控制.例如在生产(ASP.Net网站)中我设置了RequireJS,如下所示:

require.config({
            baseUrl: "@Url.Content("~/Scripts/")",
            urlArgs: "buildNumber=@(File.GetLastWriteTime(ViewContext.Controller.GetType().Assembly.Location).ToBinary().ToString() + typeof(Foundation.MvcApplication).Assembly.GetName().Version)",
            ...
});
Run Code Online (Sandbox Code Playgroud)

它保证在生产环境中重新发布项目后重新加载文件,并保持这种方式直到重新加载.

但是,我没有为SystemJS找到任何解决方案(因为SystemJS管理更多类型的模块,我想迁移到它).

有没有人在生产中使用SystemJS并遇到同样的问题,你知道SystemJS中的"urlArgs"参数(或插件)吗?

caching amd requirejs systemjs

9
推荐指数
1
解决办法
1953
查看次数

了解async/await vs在C#中使用"ContinueWith"行为等待

一种方法是标准的异步方法,如下所示:

private static async Task AutoRetryHandlerAsync_Worker(Func<Task<bool>> taskToRun,...)
Run Code Online (Sandbox Code Playgroud)

我测试了两个实现,一个使用await,另一个使用.Wait()

这两个实现完全不相同,因为相同的测试失败了await版本而不是Wait()版本.

此方法的目标是"执行输入函数返回的任务,并通过执行相同的函数重试直到它工作"(如果达到一定次数的尝试,则自动停止的限制).

这有效:

private static async Task AutoRetryHandlerAsync_Worker(Func<Task<bool>> taskToRun,...)
{
    try {
       await taskToRun();
    }
    catch(Exception) 
   {
       // Execute later, and wait the result to complete
       await Task.Delay(currentDelayMs).ContinueWith(t =>
       {
            // Wait for the recursive call to complete
            AutoRetryHandlerAsync_Worker(taskToRun).Wait();
       });

       // Stop
       return;
    }    
}
Run Code Online (Sandbox Code Playgroud)

而且(async t =>使用await 而不是使用t =>和使用.Wait()根本不起作用,因为在return;执行final之前不会等待递归调用的结果:

private static async Task AutoRetryHandlerAsync_Worker(Func<Task<bool>> taskToRun,...) …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading asynchronous

9
推荐指数
1
解决办法
923
查看次数

Angular 2+ Universal是否可以从expressjs传递参数(不使用url查询字符串)?

我正在使用该示例使用nodejs和expressjs设置Angular 4 Universal:https: //github.com/FrozenPandaz/ng-universal-demo

我一直在尝试将数据从第一个完整页面加载传递到Angular 4 final应用程序.

用例是传输从标题中检测到的语言,以便从Angular 4服务器渲染器中吸收它,以便它可以使用正确的语言来翻译事物.

到目前为止,我发现的唯一方法是使用来自"/"路由的expressjs的HTTP头进行语言检测,并使用HTTP 302重定向到"/ fr",例如,如果用户语言是法语.

main.server.ts

app.param('language', function(req: any, res, next, language) {
  if(language.length == 2) 
  {
    req.language = language;
    next();
  } else {
    next(new Error('Invalid language found'));
  }
});

// Redirect incoming trafic without language in url (302 used so the browser do not seal that redirection if the user decides to change language and reload)
app.get('/', function(req, res) {   
  res.set('location', baseUrl + '/' + getLanguage(req);
  res.status(302).send();
}); …
Run Code Online (Sandbox Code Playgroud)

express angular2-routing angular-universal

6
推荐指数
1
解决办法
1488
查看次数

具有Angular 6捆绑文件的项目模板的ASP.NET Core 404(错误的dist输出目录)

我已经使用Angular项目模板https://docs.microsoft.com/zh-CN/aspnet/core/client-side/spa/angular?view=aspnetcore-2.1&tabs=visual-创建了ASP.NET Core应用程序工作室

产生的输出

在IIS上部署时,基本href为 <base href="/">

生成的dist / index.html中的脚本路径为:

<script type="text/javascript" src="runtime.js"></script>
<script type="text/javascript" src="polyfills.js"></script>
<script type="text/javascript" src="vendor.js"></script>
<script type="text/javascript" src="main.js"></script>
Run Code Online (Sandbox Code Playgroud)

问题:404错误

部署在IIS上的404屏幕快照

但是,C#Startup.cs应该正确设置输出目录的路径

ClientApp/dist由于以下代码,ASP.NET Core项目应注意这些文件位于目录中:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        // In production, the Angular files will be served from this directory
        services.AddSpaStaticFiles(configuration =>
        {
            configuration.RootPath = "ClientApp/dist";
        });
    }
Run Code Online (Sandbox Code Playgroud)

为什么基本路径设置不正确?

该项目在IIS上运行,我们可以看到index.html的后台初始化消息正确显示,但是,如图所示,所有资源都加载在服务器的根目录“ /”上,因此它们得到404。

如果我尝试加载http:// {SERVERIP} / {PROJECTNAMEHERE} /runtime.js,我会看到它可以正常工作,所以我想这可能只是base href的问题

如何从ASP.NET Core动态设置该基本href?

c# asp.net-core angular

5
推荐指数
2
解决办法
1441
查看次数

jQuery child()和find()之间的解决方案:看起来像最接近的东西()?

根据收到的不同答案,使用jQuery而不实现我们自己的选择器函数的唯一解决方案是使用":first"或jQuery后跟".eq(0)"的基本选择器.

我想知道它们是否是任何类型的最大深度选项或类似"仅获得第一个结果然后返回它"的功能但是它似乎在jQuery中不可用,因为甚至:首先在选择器中似乎没有更快致电.eq(0)感谢您的所有评论.


原帖:

我想知道像"最近"这样的函数是否可用于子元素.

假设我有一个像这样的html结构:

div.container> [*一些元素,我不能使用children()]> div.sub1> div.sub2> div.sub1> [其他各种子元素]

如果我想要第一个div.sub1我做的事情如下:

$("div.container").find("div.sub1").eq(0)
Run Code Online (Sandbox Code Playgroud)

问题是我们无法指定"最大深度",因此将在所有孩子中搜索它.我认为这是一个性能问题.

我正在谈论"最大深度",因为我可以列出可能的选择器案例,但它将是一个很长的列表,大约6-10个项目,具体取决于具体情况.

有人有解决方案吗?

谢谢

javascript jquery children inverse closest

4
推荐指数
1
解决办法
3260
查看次数

用CSS3/HTML显示家谱

我想要的是

我试图用CSS获得一个类似血统的视图.

  • 不是桌子
  • 它需要兼容IE8 +(如果我找不到IE8的任何解决方案,我可能会考虑IE9 +)
  • 它需要由浏览器打印

问题是:在网络上我们有家庭树的资源(父母 - >孩子),但不适用于血统(孩子 - >父母)


有用的链接,但对于家谱:

我有这个脚本工作 http://thecodeplayer.com/walkthrough/css3-family-tree

但是我需要完全反转它(我的主节点需要在底部)并且我没有尝试解决方案.


我想要的视觉输出:

            G FATHER
      FATHER
            G MOTHER
CHILD

      MOTHER
Run Code Online (Sandbox Code Playgroud)

(我也可以接受这样的解决方案:孩子可以位于底部,而其父母位于顶部)

但是如果可能的话,我希望用干净的HTML和CSS来完成它.

我正在使用简单的UL容器和A容器来获取信息.这意味着:

<ul>
    <li>
        <a>Child</a>
        <ul>
            <li>
                <a>Father</a>
                ...other ULs if available...
            </li>
            <li>
                <a>Mother</a>
                ...other ULs if available...
            </li>
        </ul>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我尝试了什么(jsfiddles)

我尝试了几种情况,一种是浮子,另一种是绝对定位,但我没有得到我想要的结果.

我不得不小提示:

http://jsfiddle.net/darknessm0404/bZGFA/

和旧版本:

http://jsfiddle.net/darknessm0404/4SDNm/

如果您有任何建议或解决方案,请告诉我.网上有很好的CSS家谱,但我不想要它们,因为它们与我想要的相反.

html css css3

4
推荐指数
1
解决办法
7164
查看次数

即使在设置date_default_timezone_set之后,PHPExcel也会收到错误的时区

我在我的一个项目中使用了http://phpexcel.codeplex.com,我遇到了一个问题.我想在单元格中写入time()值,我正在这样做:

function writeTimeLine($objActiveSheet, &$lineNumber, $timeStart, $timeEnd, $duration, $category, $client, $date, $comment)
{
    $objActiveSheet->setCellValue('A'.$lineNumber, PHPExcel_Shared_Date::PHPToExcel( $timeStart ));
    $objActiveSheet->getStyle('A'.$lineNumber)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);
}
Run Code Online (Sandbox Code Playgroud)

$ objActiveSheet引用$ objPHPExcel-> getActiveSheet()

Excel中的结果是:

20点27分39秒

当我在电脑上实际测试时,它是16:27:39

所以这是时区的问题(我住在东美洲,这是-4).但是,我在设置默认时区后包含PHPExcel文件

date_default_timezone_set('America/New_York');
Run Code Online (Sandbox Code Playgroud)

即使有时间的回声()我也看到了正确的小时(16:27:39).

这是PHPExcel的错误还是我在这里做错了什么?

谢谢你的帮助.

php timezone phpexcel

3
推荐指数
2
解决办法
7994
查看次数

如何使用字符串输入中的RxJs 5进行主题和去抖动

我不知道Subject对象如何用于我想在Angular2中实现的Suggestion/Search服务.

假设每次输入更改时都会调用generateSuggestions ,以供自动完成使用.

我不明白为什么我无法从"next()"调用中得到一些东西,typescript编译器说它返回了一个void类型.

我的目标是将每个更改提交给一个对象,该对象将决定在服务器上调用每个500毫秒的函数,而不会在每个密钥条目上发送垃圾邮件.

import { Jsonp, Response, Http } from 'angular2/http';
import * as Rx from 'rxjs/Rx';
import { Injectable } from 'angular2/core';

@Injectable()
export class SearchService {
    queryStream = new Rx.Subject();

    constructor(public http: Http) {

    }

    generateSuggestions(query: string) {
        this.queryStream
            .next(query)
            .debounce(500) // Compiler error: Debounce does not exist on type "void"
            .map(
                query => this.http.get('hellow')
                        .map( (res: Response) => res.json() )
                        .subscribe( results => console.log(results) )
            );
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在普通的JS/Typescript中做到这一点,但我真的想尝试使用RxJ,因为它已经被Angular2使用了.

这里犯了什么错误?在他们的官方网站上没有任何示例的文档真的很差.

rxjs typescript angular

3
推荐指数
1
解决办法
1万
查看次数

C# 中 JavaScript Array.from 的等价物是什么(不带 while/for)?

经过几年的 Node.js 编程,我已经习惯了 JS,我想知道如何避免C# 中的while循环,通过使用更“类似地图”的方法(如 C# 中的 AddRange)来添加数组中的项目可枚举)。

例如,如果我想要一个 JavaScript 中包含 10 个元素的数组,每个元素都有一个每次递增的属性,我会这样做:

const cells = Array.from({ length:10 }, (_, i) => { 'number': i });
// gives cells = [{number: 0}, {number: 1}, ... until 9]
Run Code Online (Sandbox Code Playgroud)

如何在没有whileorfor循环的 C# 中做到这一点?

int itemWantedCount = 10;
int i = 0;
while(cells.Count < itemWantedCount)
{
   cells.Add(new MyObject(i++));
}
Run Code Online (Sandbox Code Playgroud)

我想找到一种使用 cells.AddRange 的方法,而不使用 for/while ,如果可能的话。

c#

2
推荐指数
1
解决办法
271
查看次数