小编swa*_*ati的帖子

Angular 4 - 在下拉列表中选择默认值[Reactive Forms]

在Angular 4中,我在json配置文件中定义了以下配置.

 countries: ['USA', 'UK', 'Canada'];
 default: 'UK'
Run Code Online (Sandbox Code Playgroud)

我需要使用Reactive模块在下拉列表中显示这些内容.

这是执行此操作的代码(ts)

countries: string[] = [];
default: string;
...
this.countries = config.countries;
this.default = config.default;
Run Code Online (Sandbox Code Playgroud)

HTML

<select id="country" formControlName="country"  >
 <option *ngFor="let c of countries" [value]="c" >{{ c }}</option>
</select> 
Run Code Online (Sandbox Code Playgroud)

这样做可以显示下拉国家/地区.但是,我还需要默认选择一个国家/地区,默认国家/地区来自json中定义的"默认"键.

所以,我尝试过做这样的事情

{{ C }}

但是,这不起作用.默认情况下,如果选择空值.

如何确保默认选择预定义值?

angular

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

递归 - 为什么使用return语句

我正在学习递归,下面是我要追踪的一个例子,以便更好地理解它

public static void main(String []args) {
    new TestRecursion().strRecur("abc");
}

public void strRecur(String s) {
    if(s.length() < 6) {
        System.out.println(s);
        strRecur(s+"*");
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我到目前为止所理解的内容.- 在第一次调用时strRecur("abc"),该方法被添加到执行堆栈中.由于使用参数"abc*"进行递归调用,它会在暂停之前打印"abc".

  • 第二次使用"abc*"调用,将方法推strRecur(abc*)送到堆栈并将"abc*"打印到控制台.

  • 第三次使用"abc**"调用,将方法推strRecur(abc**)送到堆栈并将"abc**"打印到控制台.

  • 第四次调用"abc***",将方法推strRecur(abc***)送到堆栈.由于满足基本条件,该方法完成(不打印任何内容)并弹出堆栈.

  • 第三次调用"abc**"已完成并弹出.由于没有待执行的代码可以执行任何操作.

  • 第二次调用"abc*"已完成并弹出.由于没有待执行的代码可以执行任何操作.

  • "abc"的初始调用已完成并弹出.由于没有待执行的代码可以执行任何操作.

堆

打印到控制台后面 -

abc
abc*
abc**
Run Code Online (Sandbox Code Playgroud)

我想我明白这里发生了什么.现在,我想尝试稍微改变一下这段代码.strRecur(s+"*")我想做而不是打电话return strRecur(s+"*")

public class TestRecursion {

    public static void main(String []args) {
        new TestRecursion().strRecur("abc");
    }

    public String strRecur(String s) {
        if(s.length() < 6) {
            System.out.println(s);
            return strRecur(s+"*");
        }
        return "Outside If";
    }
} …
Run Code Online (Sandbox Code Playgroud)

java recursion

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

如何可视化递归

我试图通过可视化来理解Java中的递归。我浏览了youtube上的一些教程,并使用其中的一个以下示例

public class TestRecursion {

    public static void main(String []args) {
        new TestRecursion().reduceByOne(10);
    }

    public void reduceByOne(int n) {
        System.out.println("Before "+n);
        if(n >= 0) {
            reduceByOne(n-1);
            System.out.println("Inside "+n);
        }
        System.out.println("After "+n);
    }
}
Run Code Online (Sandbox Code Playgroud)

根据到目前为止的了解,对reduceByOne()的每次调用都将放置在执行堆栈中。就像是

堆

因此,首先main()进入堆栈。由于它调用了reduceByOne(10),因此此方法将进入堆栈,然后将调用reduceByOne(9)并将其压入堆栈,依此类推。在将reduceByOne(-1)推入堆栈后,由于没有其他方法可以执行,reduceByOne(-1)将被弹出并执行。

我无法理解一旦弹出该方法会发生什么?让我们说,reduceByOne(2)从堆栈中弹出。我相信,将要执行的代码看起来像这样

public void reduceByOne(2) {
        System.out.println("Before "+2);
        if(2 >= 0) {
            reduceByOne(2-1);
            System.out.println("Inside "+2);
        }
        System.out.println("After "+2);
    }
Run Code Online (Sandbox Code Playgroud)

这不会再将reduceByOne(2-1)放到堆栈上吗?还是会被跳过?如果是这样,运行时如何知道弹出方法后执行什么和跳过什么?

可能是我太复杂了。但是,我无法对递归有一个清晰的了解,因此非常感谢您的帮助。

java recursion

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

Angular 4-在下拉列表中找到选定的值

我正在使用Angular 4反应形式创建一个下拉列表

<select id="city" formControlName="city" (change)="onCitySelect($event)" >
    <option *ngFor="let city of cities" [ngValue]="city" >
        {{ city }} 
    </option>
</select> 
Run Code Online (Sandbox Code Playgroud)

在下拉列表中选择一个值时,我想调用一个方法并显示所选值。

这是我的代码

onCitySelect(event) {
    console.log(event.target.value);
}
Run Code Online (Sandbox Code Playgroud)

我希望它能打印下拉列表中所示的城市名称。但是,它似乎也显示索引号。例如,

2: London
Run Code Online (Sandbox Code Playgroud)

而不是London下拉列表中实际显示的内容。

没有索引如何获取城市名称?

selectedvalue drop-down-menu angular angular-reactive-forms

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