我复制了一个简单的stackblitz,演示了我遇到的问题。问题是我有一个父组件将布尔值传递给子组件。这个布尔值是子组件上的@Input。需要注意的是,父组件使用ChangeDetectionStrategy.OnPush。子组件没有显式设置。
当父组件在订阅方法中更改子组件的布尔输入属性时,子组件最初不会检测到更改。总是需要单击 2 次才能让子组件检测到更改。
但是,当我在订阅方法之外更改子组件的布尔输入属性时,子组件会正确检测到更改,并且一切都会按预期工作(单击 1 次子组件即可识别更改)。
App.Component.ts(父组件)
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class AppComponent {
constructor(private http: HttpClient) {
}
public isHelloVisible: boolean;
public useHttpGet: boolean;
showHello() {
if (this.useHttpGet) {
this.http.get('https://cors-anywhere.herokuapp.com/https://api.darksky.net/forecast/cc0e3799790b0b34bdeb6fef28c3daf7/17.447409200000003,-78.3724573?units=si').subscribe(data => {
this.isHelloVisible = true;
});
} else {
this.isHelloVisible = true;
}
}
closeHello() {
this.isHelloVisible = false;
}
Run Code Online (Sandbox Code Playgroud)
子组件(Hello.component.ts)
@Component({
selector: 'hello',
template: `<div *ngIf="showHello">
Hello
<div (click)="closeHello()">Click me to close Hello</div>
</div>
`, …Run Code Online (Sandbox Code Playgroud) 我是 Haskell 的新手,从第一原则开始阅读 Haskell。
顺便说一句,这个问题一般与本书无关,我以以下问题为例
在第 10 章,第 10.5 节,Q 5,f 部分
题:
以下是与您已经看到的非常相似的简单折叠,但每个折叠都至少有一个错误。请修复它们并在您的 REPL 中测试
f) 文件夹 const 'a' [1..5]
并且它给出了以下错误 No instance for (Num Char)来自文字“1”

只是意味着 1 不能在这里用作 Char
但我在本章中读到折叠就像文本重写器,用函数替换 cons(:) 并用累加器替换空列表,所以结果是(我缩短了列表)
foldr const 'a' [1..2]
to
(1 `const` (2 `const` 'a'))
Run Code Online (Sandbox Code Playgroud)
并且它的工作没有编译器错误
那么有什么问题呢?为什么第一个不工作,它的重写工作?
但我看到重写的形式const有两种形式
Int -> Int -> Int
and
Int -> Char -> Int
Run Code Online (Sandbox Code Playgroud)
也许这是它的BCS所以我固定的类型,const像这样
cont :: Int -> Int -> Int
cont = const
Run Code Online (Sandbox Code Playgroud)
现在当我说使用它时
(1 `cont` (2 `cont` 'a'))
Couldn't …Run Code Online (Sandbox Code Playgroud) 在Unity UI中,LayoutElement具有最小,首选和固定大小,但没有max size属性。
例如,如果我有一个text1和
layoutElement.flxibleWith = 1
layoutElement.minHeight = 19
Run Code Online (Sandbox Code Playgroud)
text1 一行txt:
但是,当我在text1其中加载文本时,它的高度会无限扩展:
我已经编写了一个脚本:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
[ExecuteInEditMode]
[RequireComponent(typeof(LayoutElement))]
public class LayoutElementMaxSize : MonoBehaviour
{
private LayoutElement layoutElement;
private ContentSizeFitter contentSizeFitter;
private RectTransform rectransform;
public bool controllWidth;
public bool controllHeight;
public float maxHight;
public float maxWidth;
void Start()
{
layoutElement = GetComponent<LayoutElement>();
rectransform = GetComponent<RectTransform>();
}
public void Update()
{
if(rectransform.hasChanged)
{
rectransform.hasChanged = false;
if (controllHeight)
{
layoutElement.preferredHeight = -1;
layoutElement.CalculateLayoutInputHorizontal();
layoutElement.CalculateLayoutInputVertical(); …Run Code Online (Sandbox Code Playgroud) 我是 Haskell 的新手,从第一性原理开始阅读 Haskell,在第 384 页的折叠章节中,我遇到了FoldR,似乎它不是尾递归的
foldr :: (a -> b -> b) -> b -> [a] -> b
foldr f z [] = z
foldr f z (x:xs) = f x (foldr f z xs)
Run Code Online (Sandbox Code Playgroud)
1-我们可以让它尾递归吗?
2-它会被优化吗?
我使用了 ng-bootstrap 中的模态
在我的父组件中,我曾经modalService打开模态,然后使用将数据发送到模态componentInstance。
在模态组件中,我用来ngOnChanges获取发送的数据。但未ngOnChanges触发。
父组件
public toAttach(): void {
let modalRef = this.modalService.open(HelloComponent);
modalRef.componentInstance.attachments = this.attachments;
}
Run Code Online (Sandbox Code Playgroud)
模态成分
ngOnChanges(changes: SimpleChanges) {
console.log("start!");
if (changes["attachments"] && changes["attachments"].currentValue) {
console.log(changes["attachments"].currentValue);
}
}
Run Code Online (Sandbox Code Playgroud) 我是 Haskell 的新手,从第一原则开始阅读 Haskell。
在第 10 章第 378 页中,我遇到了这种新语法
fibs = 1 : scanl (+) 1 fibs
Run Code Online (Sandbox Code Playgroud)
似乎 fibs 是一个函数 bcs 它在右侧被使用或调用
但它的类型是fibs :: Num a => [a]一个值
如何在它自己的定义中访问一个值?
如果我确实尝试查看 fibs 中的内容,它只会向无穷大打印。
和其他i = 1 + i完全有效语法的例子
,
但是当我在 ghci 旁边运行它时,它也会停止它。
i如果根本没有分配,如何在右侧访问?i右边第一次的价值是多少?i右边的值是什么?任何可以帮助的文章?
haskell ×3
angular ×2
ghci ×2
c# ×1
fold ×1
ghc ×1
observable ×1
optimization ×1
polymorphism ×1
types ×1
typescript ×1