我正在尝试使用Angular 2中的验证来实现嵌套表单,我已经看到了帖子并且遵循了文档,但我真的很挣扎,希望你能指出我正确的方向.
我想要实现的是拥有一个带有多个子组件的经过验证的表单.这些子组件有点复杂,其中一些有更多的子组件,但为了这个问题,我认为我们可以解决有父母和孩子的问题.
我想要完成什么?
有一个像这样工作的表单:
<div [formGroup]="userForm" novalidate>
<div>
<label>User Id</label>
<input formControlName="userId">
</div>
<div>
<label>Dummy</label>
<input formControlName="dummyInput">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这需要一个像这样的类:
private userForm: FormGroup;
constructor(private fb: FormBuilder){
this.createForm();
}
private createForm(): void{
this.userForm = this.fb.group({
userId: ["", Validators.required],
dummyInput: "", Validators.required]
});
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作,但现在我想要解耦代码,并将"dummyInput"功能放在一个单独的不同组件中.这是我迷路的地方.这就是我的尝试,我想我离答案不远,但我真的没有想法,我对这个场景很新:
parent.component.html
<div [formGroup]="userForm" novalidate>
<div>
<label>User Id</label>
<input formControlName="userId">
</div>
<div>
<dummy></dummy>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
parent.component.ts
private createForm(): void{
this.userForm = this.fb.group({
userId: ["", Validators.required],
dummy: this.fb.group({
dummyInput: ["", Validators.required]
})
});
Run Code Online (Sandbox Code Playgroud)
children.component.html
<div [formGroup]="dummyGroup">
<label>Dummy Input: …Run Code Online (Sandbox Code Playgroud) 我有一个导航栏作为路由器,有两个锚标签,Home和Create,Create是Home的孩子.我想在选中时激活Create锚标记,但Home锚也会激活,因为它是Create的父级.
是否有任何方法可以防止父级锚标记在子级时变为活动状态?
Home.component
<ul class="nav navbar-nav">
<li [routerLink]="'/home'" routerLinkActive="active">
<a>Home</a>
</li>
<li [routerLink]="'create'" routerLinkActive="active">
<a>Create</a>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
app.routing
const appRoutes: Routes = [{
path: "home", component: HomeComponent, children: [{
path: "create", component: CreateComponent
}]
}];
Run Code Online (Sandbox Code Playgroud)
目前的行为
想要行为
访问/ home/create(通知仅创建标记处于活动状态):
我在家庭组件中遗漏了什么或者这是一种正常的行为吗?我不应该使用Create作为Home的孩子吗?
非常感谢你们.
我正在使用 useEffect 挂钩根据photos传入的道具中的数据进行 API 调用。
const ImageCarousel = ({ src, photos }) => {
const [photoList, setPhotos] = useState([]);
const storageRef = firebase.storage().ref();
console.log("photos prop:", photos);
const getImage = photoId => {
return new Promise((resolve, reject) => {
storageRef
.child("images/" + photoId)
.getDownloadURL()
.then(url => resolve(url))
.catch(error => reject(error));
});
};
useEffect(() => {
console.log("trigger");
Promise.all(
photos.map(async photoId => {
const url = await getImage(photoId);
return url;
})
)
.then(photoUrls => {
setPhotos(photoUrls);
})
.catch(e => console.log(e));
}, …Run Code Online (Sandbox Code Playgroud) 我还是有点新手,我被分配了维护先前完成的代码的任务.我有一个模拟SQL Management Studio的Web,例如限制删除选项,因此基本用户不会搞砸我们的服务器.好吧,我们有一个函数,需要一个查询或查询,它工作正常,但我们的服务器RAM被复杂的查询炸毁,也许它不是那么多的数据,但它的铸造xml和所有那些我仍然没有的东西在SQL中理解.
这是实际的功能:
public DataSet ExecuteMultipleQueries(string queries)
{
var results = new DataSet();
using (var myConnection = new SqlConnection(_connectionString))
{
myConnection.Open();
var sqlCommand = myConnection.CreateCommand();
sqlCommand.Transaction = myConnection.BeginTransaction(IsolationLevel.ReadUncommitted);
sqlCommand.CommandTimeout = AppSettings.SqlTimeout;
sqlCommand.CommandText = queries.Trim();
var dataAdapter = new SqlDataAdapter { SelectCommand = sqlCommand };
dataAdapter.Fill(results);
return results;
}
}
Run Code Online (Sandbox Code Playgroud)
我有点失落,我读过许多不同的答案,但要么我不理解他们,要么他们不以任何方式解决我的问题.
我知道我可以使用Linq-toSql-或Entity,我尝试了它们但我真的不知道如何使用"未知"查询,我可以尝试更多地研究,所以如果你认为它们会帮助我接近一个解决方案,无论如何,我会尝试学习它.
所以要点:
该函数似乎在dataAdapter.Fill(results)调试时停止,此时服务器尝试回答查询并消耗其所有RAM并阻塞自身.我怎么解决这个问题?我想也许可以让SQL返回一定数量的数据,将它存储在某个集合中,然后继续返回数据,并继续前进,直到没有更多数据从SQL返回,但我真的不知道如何检测还有从SQL返回的数据.
我还考虑过在两个不同的线程中读取和存储,但我不知道一个线程中的数据如何存储在其他线程异步中(如果它解决了问题,则更少).
所以,是的,我根本没有任何明确的信息,所以任何指导或提示都会受到高度赞赏.
在此先感谢并为长篇文章感到抱歉.
angular ×2
c# ×1
components ×1
forms ×1
javascript ×1
linq ×1
react-hooks ×1
reactjs ×1
router ×1
sql ×1
sql-server ×1
validation ×1