小编Sem*_*ide的帖子

如何为Angular2组件实现多个生命周期钩子?

我知道在Angular2中定义组件时,您可以实现多种类型的生命周期钩子,例如OnDestroy,NgOnInit等.

在我在网上看到的关于使用这些钩子的每个代码片段中,我只看到它们一次被使用一个.例如

export class ModalComponent implements OnDestroy { ... }
Run Code Online (Sandbox Code Playgroud)

要么

export class ModalComponent implements OnChanges { ... } 
Run Code Online (Sandbox Code Playgroud)

但是如果你想为一个组件使用多个呢?例如,如果您想要OnChanges和OnDestroy的特定行为,该怎么办?我尝试过以下方法:

export class ModalComponent implements OnChanges implements OnDestroy{ ... } 
export class ModalComponent implements OnChanges, OnDestroy { ... } 
export class ModalComponent implements [OnChanges, OnDestroy] { ... } 
export class ModalComponent implements OnChanges and OnDestroy { ... } 
Run Code Online (Sandbox Code Playgroud)

我确定答案非常简单,但我在找到答案时遇到了很多麻烦.

先感谢您!

lifecycle-hook angular

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

Angular2无法识别来自导入模块的组件

我正在玩Angular2,并试图让一个模块(BreadcrumbDemoModule)导入另一个(BreadcrumbModule)的组件.

目前,BreadcrumbModule只包含一个组件:ng2-breadcrumb.但是,当我尝试使用此组件时BreadcrumbDemoModule,我收到错误消息:

'ng2-breadcrumb'不是已知元素.

我想我必须在某个地方错过一条线,并希望有人可以向我指出我做错了什么.

非常感谢你提前!

BreadcrumbModule的文件

breadcrumb.component.html:

THIS IS A BREADCRUMB TEST
Run Code Online (Sandbox Code Playgroud)

breadcrumb.component.ts:

import { Component } from '@angular/core';  

@Component({
  selector: 'ng2-breadcrumb',
  template: require('./breadcrumb.component.html')
})
export class BreadcrumbComponent {}
Run Code Online (Sandbox Code Playgroud)

组件/面包屑/ index.ts:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BreadcrumbComponent } from './breadcrumb.component';

@NgModule({
  imports: [
    BrowserModule //for later use
  ],
  declarations: [
    BreadcrumbComponent
  ]
})
export class BreadcrumbModule {}
Run Code Online (Sandbox Code Playgroud)

BreadcrumbDemoModule的文件

面包屑demo.component.html:

<ng2-breadcrumb></ng2-breadcrumb>
Run Code Online (Sandbox Code Playgroud)

面包屑demo.component.ts:

import { …
Run Code Online (Sandbox Code Playgroud)

typescript angular-components angular

12
推荐指数
1
解决办法
6345
查看次数

可以使用我们的/他们的来解决单个文件上的 Git 冲突吗?

我在 Stack Overflow 和其他地方找到了许多使用 OURS/THEIRS 动态解决冲突的说明,以防您只想用另一个文件(特别是二进制文件)覆盖一个文件。然而,在我发现的几乎每个例子中,它总是被整体应用于所有冲突,而我只想将它应用于单个冲突文件。

我发现的一种假设解决方案是使用 git mergetool 命令。然而,合并工具给我带来了问题,我选择了“选择左边”或“选择右边”,但没有任何反应。

不管mergetool如何,我还是想知道是否有办法从命令行执行此操作。我确定有,如果有人让我知道命令,或者以其他方式将我链接到我一定找不到的 SO 问题,我将不胜感激。

我也试过用...

git checkout --theirs PATH/TO/CONFLICTED/FILE

但是当我输入 'git status' 时,它仍然显示文件冲突。

非常感谢您的参与。

git merge command-line

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

将向量值相乘的最简单方法?

我有一个愚蠢的问题。大约 10 年前,我参加了一个向量数学课,我可以发誓我记得一个允许我将向量的值相乘的运算,如下所示:

Vector3 v1 = new Vector3(1, 0, 2)
Vector3 v2 = new Vector3(5, 5, 5)
//Vector3 v3 = SomeVectorOperation(v1, v2) = (1 * 5, 0 * 5, 2 * 5)
Run Code Online (Sandbox Code Playgroud)

现在查看我所有的笔记,以及我可以在网上找到的所有内容,看起来这根本不是一个常见的操作。当然,我可以编写一个函数来做到这一点:

Vector3 VectorMult(Vector3 v1, Vector3 v2) {
    return new Vector3(v1.x * v2.x, v1.y * v2.y, v1.z * v2.z);
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现至少有几个这样的操作会有所帮助的实例,所以我不确定为什么它不会以某种形式存在。所以,我想我有两个问题:

  1. 有没有比制作自己的自定义函数更简单的方法来获得我正在寻找的结果?
  2. 为什么没有像这样的标准向量操作开始?

非常感谢您的宝贵时间!

vector linear-algebra vectormath unity-game-engine

8
推荐指数
1
解决办法
6675
查看次数

将数据传递到Angular1应用程序中的降级Angular2组件

我对Angular很新,所以如果这是一个明显的问题,请原谅我.

经过大量的试验和错误,我设法让我的新Angular2组件正确降级,以便它可以在我的Angular1.4应用程序中运行.该组件主要起作用.唯一的问题 - 它是一个很大的问题 - 该组件忽略了我在模板级别提供的所有输入.

我认为问题是我传递它们的方式.我想我可能会意外地使用Angular2方式传递它们而不是Angular1,但是我无法验证它.我所知道的是,当我从ngOnInit()中检查我的@input()变量的值时,它们显示为未定义,即使我通过模板传递硬值.

(抱歉这里的格式化,代码似乎不会呈现为文本) Breadcrumb.html(在Angular1应用程序中):

> <breadcrumb    <!-- These two inputs are coming in as 'undefined'??--> 
>     [options]="[
>       {name: 'Option 1', disabled: false},
>       {name: 'Option 2', disabled: false},
>       {name: 'Option 3', disabled: true}
>     ]"
>     [selectedIndex]="0"
>     (selectionMade)="logOutput($event)"
>   </breadcrumb>
Run Code Online (Sandbox Code Playgroud)

Breadcrumb.component.ts(在Angular2组件"breadcrumb"中):

import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';

@Component({
  selector: 'app-breadcrumb',
  template: require('./breadcrumb.component.html')
})
export class BreadcrumbComponent implements OnInit {
  @Input() options : Array<any>;    
  @Input() selectedIndex : number;
  @Output() …
Run Code Online (Sandbox Code Playgroud)

angularjs angular-components angular

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

是否可以限制 C# 中的公共枚举值?

我目前正在为由展览组成的游览编写一个软件程序。展览对象在任何给定点都处于四种状态之一,由 ExhibitStates 枚举定义:

private enum ExhibitState { Ready, Active, Complete, Inactive };
Run Code Online (Sandbox Code Playgroud)

对于将要布置展览的开发人员,我希望他们只有两种“起始”状态可供选择:

public enum StartingExhibitState { Ready, Inactive };
Run Code Online (Sandbox Code Playgroud)

目前,我已将其设置为在初始化后,展览将立即设置其状态以匹配其起始状态,如下所示:

        switch (startingState) {
            case StartingExhibitState.Ready:
                SetState(ExhibitState.Ready);
                break;
            case StartingExhibitState.Inactive:
                SetState(ExhibitState.Inactive);
                break;
        }
Run Code Online (Sandbox Code Playgroud)

今天我发现自己想知道这是否是最佳实践。有没有更好的方法来限制哪些枚举选项是公共的,哪些是私有的?或者最好只拥有两个单独的枚举?

非常感谢您的参与。

c# enums encapsulation private public

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

节点readline模块没有“打开”功能?

我正在尝试创建一个节点应用程序,该应用程序使用“ readline”模块逐行读取文本文件,并将其打印到控制台。

  var lineReader = require('readline');
  lineReader.createInterface({
    input: fs.createReadStream('./testfile')
  });
  lineReader.on('line', function(line){
    console.log(line);
  });
Run Code Online (Sandbox Code Playgroud)

根据模块的文档,应该有一个“ on”方法。但是,当我记录我创建的readline对象的实例时,在任何地方都看不到“ on”方法:

{ createInterface: [Function],   Interface:    { [Function: Interface]
     super_:
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] } },   
emitKeypressEvents: [Function: emitKeypressEvents],   
cursorTo: [Function: cursorTo],   
moveCursor: [Function: moveCursor],   
clearLine: [Function: clearLine],   
clearScreenDown: [Function: clearScreenDown],   
codePointAt: [Function: deprecated],   
getStringWidth: [Function: deprecated],   
isFullWidthCodePoint: [Function: deprecated],   
stripVTControlCharacters: [Function: deprecated] }
Run Code Online (Sandbox Code Playgroud)

因此,自然地,当我调用时lineReader.on(),我得到一个错误,指出该函数不存在。

我正在严格按照文档进行操作……我缺少什么?on方法在哪里?

非常感谢您抽出宝贵的时间。

javascript methods module filereader node.js

5
推荐指数
1
解决办法
1824
查看次数

可以按类对 Visual Studio 社区智能感知建议进行排序吗?

我是一名 Unity 开发人员,刚刚从 Monodevelop 跳到 Visual Studio 社区。总体而言,Visual Studio 社区是一个巨大的改进,但我想念 Monodevelop 做得更好的一件事:使用 Monodevelop 的自动完成功能,它始终会按类对函数/变量进行排序。使用 VSC,它只是按字母顺序显示所有可能的结论,包括所有类和基类方法和属性。

因此,在此处显示的示例中,如果我从键入“PauseManager”开始。在 Monodevelop 中,它会首先显示 PauseManager 的自动完成建议,然后是它的基类 System.Object。

Monodevelop

但是,当我在 Visual Studio 中键入相同的内容时,它会按字母顺序向我显示大量方法和属性列表,其中大部分我不太可能使用。

视觉工作室

这是一个只有一个祖先的小类的非常简单的例子;你可以想象,当我有一个包含十几个公共方法和多个祖先的类时,这会变得特别笨拙,每个祖先都有自己的公共方法和属性。

我在这里查看了 Intellisense 的文档:https : //code.visualstudio.com/docs/editor/intellisense,但我没有看到任何关于我想要完成的任务的选项。

有谁知道可以做到这一点的方法?如果不是,我可能不得不不情愿地回到 Monodevelop - 浏览所有这些方法以整理出与我正在做的事情相关的那些变成了一个令人讨厌的小浪费时间。

c# intellisense monodevelop unity-game-engine visual-studio

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

模板类构造函数接受参数时出错

我一直在寻找解决我的问题的互联网,但没有找到一个像我一样的例子问题(我认识到).

我正在尝试为我的模板类创建一个简单的构造函数,但是我的语法或实现一定有问题,因为我在测试它时会一直得到相同的编译错误.它似乎与我传递参数的方式有关,因为如果我创建一个没有参数的对象,它编译得很好(这看起来很奇怪,因为我没有不带参数的构造函数).

vecxd.hpp:

#ifndef JF_VecXd
#define JF_VecXd

template <class T>
class VecXd : public VecXd<T>{
    public: 
        VecXd(T a, T b, T c);   

    private:
         T x, y, z; 

};

template <class T> 
VecXd<T>::VecXd(T a, T b, T c){
    x = a; 
    y = b;
    z = c;
}

#endif
Run Code Online (Sandbox Code Playgroud)

TEST.CPP:

#include "vecxd.hpp"

int main(){
    int a = 3, b = 4, c = 5;
    VecXd<int> tVec(a,b,c);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

错误:

3 vecxd.hpp无效使用未定义类型`class VecXd'

但是当我创建没有参数的对象时它会编译,如下所示:

int a = 1, b = 2, …
Run Code Online (Sandbox Code Playgroud)

c++ templates constructor

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

如何重载>>运算符来获取变量参数列表

我想重载'>>'运算符,以便有人可以输入任意数量的值.

这是我正在进行的任务中的要求verbatum:

运算符>>应该期望以下列形式看到输入:d v1 v2 ... vd,其中d是向量的维数,每个vi是对应于向量中索引i的值.

我认为它的工作方式是第一个值是数组的大小(包含在对象Vex中),其余的将是元素.所以,如果他们要输入

Vex vX;
4, 1, 2, 3, 4 >> vX; 
Run Code Online (Sandbox Code Playgroud)

vX将创建一个大小为4的动态数组,其中包含数字1-4.

我挂断的主要部分是如何编程>>重载,因为会有可变数量的参数.

理想情况下,我会有一个解决...的效果(这只是一个例子):

std::istream& Vex::operator>>(istream& is, const Vex&){
   /*
     Assume int * data has been previously declared in constructor
     data = new int[iterator[0]]
     create iterator of input for istream
     For n from 1 to iterator[0]...
         data[n] = iterator[n] 
   */
}
Run Code Online (Sandbox Code Playgroud)

我只是不知道该怎么做.我一直在环顾四周,我找到了istream_iterator,但我找不到有人使用它的方式我需要使用它的任何好例子.

我希望我提供的信息足以回答这个问题.如果没有,请告诉我.

非常感谢您的宝贵时间.

c++ operator-overloading

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